1 package junit.extensions; 2 3 import junit.framework.Test; 4 import junit.framework.TestCase; 5 import junit.framework.TestResult; 6 import junit.framework.TestSuite; 7 8 14 public class ActiveTestSuite extends TestSuite { 15 private volatile int fActiveTestDeathCount; 16 17 public ActiveTestSuite() { 18 } 19 20 public ActiveTestSuite(Class <? extends TestCase> theClass) { 21 super(theClass); 22 } 23 24 public ActiveTestSuite(String name) { 25 super (name); 26 } 27 28 public ActiveTestSuite(Class <? extends TestCase> theClass, String name) { 29 super(theClass, name); 30 } 31 32 @Override 33 public void run(TestResult result) { 34 fActiveTestDeathCount= 0; 35 super.run(result); 36 waitUntilFinished(); 37 } 38 39 @Override 40 public void runTest(final Test test, final TestResult result) { 41 Thread t= new Thread () { 42 @Override 43 public void run() { 44 try { 45 test.run(result); 48 } finally { 49 ActiveTestSuite.this.runFinished(); 50 } 51 } 52 }; 53 t.start(); 54 } 55 56 synchronized void waitUntilFinished() { 57 while (fActiveTestDeathCount < testCount()) { 58 try { 59 wait(); 60 } catch (InterruptedException e) { 61 return; } 63 } 64 } 65 66 synchronized public void runFinished() { 67 fActiveTestDeathCount++; 68 notifyAll(); 69 } 70 } | Popular Tags |