1 package junit.extensions;
2
3 import junit.framework.*;
4
5 /**
6 * A TestSuite for active Tests. It runs each
7 * test in a separate thread and waits until all
8 * threads have terminated.
9 * -- Aarhus Radisson Scandinavian Center 11th floor
10 */
11 public class ActiveTestSuite extends TestSuite {
12 private volatile int fActiveTestDeathCount;
13
|
14 public ActiveTestSuite() {
15 }
|
16
17 public ActiveTestSuite(Class theClass) {
|
18 > super(theClass);
19 > }
|
20
21 public ActiveTestSuite(String name) {
|
22 > super (name);
23 > }
|
24
25 public ActiveTestSuite(Class theClass, String name) {
|
26 > super(theClass, name);
27 > }
|
28
29 public void run(TestResult result) {
|
30 fActiveTestDeathCount= 0;
31 super.run(result);
32 waitUntilFinished();
33 }
|
34
35 public void runTest(final Test test, final TestResult result) {
|
36 Thread t= new Thread() {
37 public void run() {
|
38 try {
39 // inlined due to limitation in VA/Java
40 //ActiveTestSuite.super.runTest(test, result);
|
41 test.run(result);
42 } finally {
43 ActiveTestSuite.this.runFinished(test);
|
44 }
|
45 }
|
46 };
|
47 t.start();
48 }
|
49
50 synchronized void waitUntilFinished() {
|
51 while (fActiveTestDeathCount < testCount()) {
|
52 try {
|
53 wait();
54 } catch (InterruptedException e) {
|
55 > return; // ignore
|
56 }
57 }
|
58 }
|
59
60 synchronized public void runFinished(Test test) {
|
61 fActiveTestDeathCount++;
62 notifyAll();
63 }
|
64 } |