Mönster för flertrådade enhetstester

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn

Detta är ett designmönster för hur man skriver ett enhetstest som utför samma test samtidigt i flera trådar.

Genom att utnyttja java.util.concurrent på ett smart sätt säkerställer man maximal samtidighet, vilken kan avslöja trådbuggar.

Kom ihåg: det går inte att bevisa att ett program är fritt från trådbuggar. Det handlar om att göra det sannolikt att det fungerar i en flertrådad miljö.

Kodmall



    @Test
    public void testSomething() {
        assertTrue(true);
    }

    @Test
    public void testConcurrentAuthInfoResponse() throws InterruptedException {
        final int threads = 100;

        final CountDownLatch readyToStart = new CountDownLatch(threads);
        final CountDownLatch startingGun = new CountDownLatch(1);
        final CountDownLatch finishLine = new CountDownLatch(threads);
        final AtomicInteger failCount = new AtomicInteger();

        for (int i=0; i

Visserligen en hel del boilerplate, men det kan man faktorera ut till en Template á là Springs JdbcTemplate.

3 Comments

  • 1
    2011-02-18 - 01:06 | Permalink

    Like!

  • 2
    Viktor Nordling
    2011-11-11 - 05:07 | Permalink

    Har kodexmplet pajjat?

  • 3
    Olle Hallin
    2011-11-11 - 10:08 | Permalink

    Hmm, det verkar ha blivit stympat i samband med att vi bytte bloggmotor från Pebble till WordPress…

    Skall leta…

  • Leave a Reply

    Your email address will not be published. Required fields are marked *