1 package org.junit.tests.experimental.parallel; 2 3 import static org.hamcrest.core.Is.is; 4 import static org.hamcrest.core.IsNot.not; 5 import static org.junit.Assert.assertNotNull; 6 import static org.junit.Assert.assertThat; 7 import static org.junit.Assert.assertTrue; 8 9 import java.util.concurrent.CountDownLatch; 10 import java.util.concurrent.TimeUnit; 11 12 import org.junit.Before; 13 import org.junit.BeforeClass; 14 import org.junit.Test; 15 import org.junit.experimental.ParallelComputer; 16 import org.junit.runner.JUnitCore; 17 import org.junit.runner.Result; 18 19 public class ParallelMethodTest { 20 private static final long TIMEOUT = 15; 21 private static volatile Thread fOne = null; 22 private static volatile Thread fTwo = null; 23 24 public static class Example { 25 private static volatile CountDownLatch fSynchronizer; 26 27 @BeforeClass 28 public static void init() { 29 fSynchronizer = new CountDownLatch(2); 30 } 31 32 @Test 33 public void one() throws InterruptedException { 34 fSynchronizer.countDown(); 35 assertTrue(fSynchronizer.await(TIMEOUT, TimeUnit.SECONDS)); 36 fOne = Thread.currentThread(); 37 } 38 39 @Test 40 public void two() throws InterruptedException { 41 fSynchronizer.countDown(); 42 assertTrue(fSynchronizer.await(TIMEOUT, TimeUnit.SECONDS)); 43 fTwo = Thread.currentThread(); 44 } 45 } 46 47 @Before 48 public void init() { 49 fOne = null; 50 fTwo = null; 51 } 52 53 @Test 54 public void testsRunInParallel() { 55 Result result = JUnitCore.runClasses(ParallelComputer.methods(), Example.class); 56 assertTrue(result.wasSuccessful()); 57 assertNotNull(fOne); 58 assertNotNull(fTwo); 59 assertThat(fOne, is(not(fTwo))); 60 } 61 }