public class TextRunnerTest extends TestCase
1: package junit.tests.runner;
3: import java.io.File;
4: import java.io.IOException;
5: import java.io.InputStream;
6: import java.io.OutputStream;
7: import java.io.PrintStream;
9: import junit.framework.TestCase;
10: import junit.framework.TestResult;
11: import junit.framework.TestSuite;
13: public class TextRunnerTest extends TestCase {
14:
15: public void testFailure() throws Exception {
16: execTest("junit.tests.framework.Failure", false);
17: }
19: public void testSuccess() throws Exception {
20: execTest("junit.tests.framework.Success", true);
21: }
23: public void testError() throws Exception {
24: execTest("junit.tests.BogusDude", false);
25: }
26:
27: void execTest(String testClass, boolean success) throws Exception {
28: String java= System.getProperty("java.home")+File.separator+"bin"+File.separator+"java";
29: String cp= System.getProperty("java.class.path");
30: //use -classpath for JDK 1.1.7 compatibility
31: String [] cmd= { java, "-classpath", cp, "junit.textui.TestRunner", testClass};
32: Process p= Runtime.getRuntime().exec(cmd);
33: InputStream i= p.getInputStream();
34: int b;
35: while((b= i.read()) != -1)
36: ; //System.out.write(b);
37: assertTrue((p.waitFor() == 0) == success);
38: if (success)
39: assertEquals(junit.textui.TestRunner.SUCCESS_EXIT, p.exitValue());
40: else
41: assertEquals(junit.textui.TestRunner.FAILURE_EXIT, p.exitValue());
42: }
43:
44: public void testRunReturnsResult() {
45: PrintStream oldOut= System.out;
46: System.setOut(new PrintStream (
47: new OutputStream() {
48: public void write(int arg0) throws IOException {
49: }
50: }
51: ));
52: try {
53: TestResult result= junit.textui.TestRunner.run(new TestSuite());
54: assertTrue(result.wasSuccessful());
55: } finally {
56: System.setOut(oldOut);
57: }
58: }
59:
61: }