1 package org.junit.tests.running.core;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertTrue;
5
6 import java.io.ByteArrayOutputStream;
7 import java.io.PrintStream;
8
9 import org.junit.After;
10 import org.junit.Before;
11 import org.junit.Test;
12 import org.junit.runner.JUnitCore;
13
14 public class CommandLineTest {
15 private ByteArrayOutputStream results;
16 private PrintStream oldOut;
17 private static boolean testWasRun;
18
19 @Before
20 public void before() {
21 oldOut = System.out;
22 results = new ByteArrayOutputStream();
23 System.setOut(new PrintStream(results));
24 }
25
26 @After
27 public void after() {
28 System.setOut(oldOut);
29 }
30
31 static public class Example {
32 @Test
33 public void test() {
34 testWasRun = true;
35 }
36 }
37
38 @Test
39 public void runATest() {
40 testWasRun = false;
41 new MainRunner().runWithCheckForSystemExit(new Runnable() {
42 public void run() {
43 JUnitCore.main("org.junit.tests.running.core.CommandLineTest$Example");
44 }
45 });
46 assertTrue(testWasRun);
47 }
48
49 @Test
50 public void runAClass() {
51 testWasRun = false;
52 JUnitCore.runClasses(Example.class);
53 assertTrue(testWasRun);
54 }
55
56 private static int fCount;
57
58 static public class Count {
59 @Test
60 public void increment() {
61 fCount++;
62 }
63 }
64
65 @Test
66 public void runTwoClassesAsArray() {
67 fCount = 0;
68 JUnitCore.runClasses(new Class[]{Count.class, Count.class});
69 assertEquals(2, fCount);
70 }
71
72 @Test
73 public void runTwoClasses() {
74 fCount = 0;
75 JUnitCore.runClasses(Count.class, Count.class);
76 assertEquals(2, fCount);
77 }
78 }