11package org .junit .runner .notification ;
22
33import static org .hamcrest .CoreMatchers .instanceOf ;
4- import static org .hamcrest .core .Is .is ;
5- import static org .junit .Assert .assertNotNull ;
4+ import static org .hamcrest .CoreMatchers .not ;
65import static org .junit .Assert .assertSame ;
76import static org .junit .Assert .assertThat ;
8-
9- import java .util .concurrent .atomic .AtomicInteger ;
10-
7+ import static org .junit .testsupport .EventCollectorMatchers .hasNoFailure ;
8+ import static org .junit .testsupport .EventCollectorMatchers .hasNumberOfTestsStarted ;
119import org .junit .Test ;
12- import org .junit .runner .Description ;
1310import org .junit .runner .Result ;
11+ import org .junit .testsupport .EventCollector ;
1412
1513public class RunNotifierTest {
1614 private final RunNotifier fNotifier = new RunNotifier ();
1715
1816 @ Test
1917 public void notifiesSecondListenerIfFirstThrowsException () {
20- FailureListener failureListener = new FailureListener ();
18+ EventCollector eventCollector = new EventCollector ();
2119 fNotifier .addListener (new CorruptListener ());
22- fNotifier .addListener (failureListener );
20+ fNotifier .addListener (eventCollector );
2321 fNotifier .fireTestFailure (new Failure (null , null ));
24- assertNotNull ("The FailureListener registered no failure." ,
25- failureListener .failure );
22+ assertThat (eventCollector , not (hasNoFailure ()));
2623 }
2724
2825 @ Test
2926 public void hasNoProblemsWithFailingListeners () { // see issues 209 and 395
3027 fNotifier .addListener (new CorruptListener ());
31- fNotifier .addListener (new FailureListener ());
28+ fNotifier .addListener (new EventCollector ());
3229 fNotifier .addListener (new CorruptListener ());
3330 fNotifier .fireTestRunFinished (new Result ());
3431 }
@@ -44,88 +41,70 @@ public void testFailure(Failure failure) throws Exception {
4441 throw new RuntimeException ();
4542 }
4643 }
47-
44+
4845 @ Test
4946 public void addAndRemoveWithNonThreadSafeListener () {
50- CountingListener listener = new CountingListener ();
51- assertThat (listener . fTestStarted . get (), is (0 ));
47+ EventCollector listener = new EventCollector ();
48+ assertThat (listener , hasNumberOfTestsStarted (0 ));
5249 fNotifier .addListener (listener );
5350 fNotifier .fireTestStarted (null );
54- assertThat (listener . fTestStarted . get (), is (1 ));
51+ assertThat (listener , hasNumberOfTestsStarted (1 ));
5552 fNotifier .removeListener (listener );
5653 fNotifier .fireTestStarted (null );
57- assertThat (listener . fTestStarted . get (), is (1 ));
54+ assertThat (listener , hasNumberOfTestsStarted (1 ));
5855 }
5956
6057 @ Test
6158 public void addFirstAndRemoveWithNonThreadSafeListener () {
62- CountingListener listener = new CountingListener ();
63- assertThat (listener . fTestStarted . get (), is (0 ));
59+ EventCollector listener = new EventCollector ();
60+ assertThat (listener , hasNumberOfTestsStarted (0 ));
6461 fNotifier .addFirstListener (listener );
6562 fNotifier .fireTestStarted (null );
66- assertThat (listener . fTestStarted . get (), is (1 ));
63+ assertThat (listener , hasNumberOfTestsStarted (1 ));
6764 fNotifier .removeListener (listener );
6865 fNotifier .fireTestStarted (null );
69- assertThat (listener . fTestStarted . get (), is (1 ));
66+ assertThat (listener , hasNumberOfTestsStarted (1 ));
7067 }
71-
68+
7269 @ Test
7370 public void addAndRemoveWithThreadSafeListener () {
7471 ThreadSafeListener listener = new ThreadSafeListener ();
75- assertThat (listener . fTestStarted . get (), is (0 ));
72+ assertThat (listener , hasNumberOfTestsStarted (0 ));
7673 fNotifier .addListener (listener );
7774 fNotifier .fireTestStarted (null );
78- assertThat (listener . fTestStarted . get (), is (1 ));
75+ assertThat (listener , hasNumberOfTestsStarted (1 ));
7976 fNotifier .removeListener (listener );
8077 fNotifier .fireTestStarted (null );
81- assertThat (listener . fTestStarted . get (), is (1 ));
78+ assertThat (listener , hasNumberOfTestsStarted (1 ));
8279 }
8380
8481 @ Test
8582 public void addFirstAndRemoveWithThreadSafeListener () {
8683 ThreadSafeListener listener = new ThreadSafeListener ();
87- assertThat (listener . fTestStarted . get (), is (0 ));
84+ assertThat (listener , hasNumberOfTestsStarted (0 ));
8885 fNotifier .addFirstListener (listener );
8986 fNotifier .fireTestStarted (null );
90- assertThat (listener . fTestStarted . get (), is (1 ));
87+ assertThat (listener , hasNumberOfTestsStarted (1 ));
9188 fNotifier .removeListener (listener );
9289 fNotifier .fireTestStarted (null );
93- assertThat (listener . fTestStarted . get (), is (1 ));
90+ assertThat (listener , hasNumberOfTestsStarted (1 ));
9491 }
9592
9693 @ Test
9794 public void wrapIfNotThreadSafeShouldNotWrapThreadSafeListeners () {
98- ThreadSafeListener listener = new ThreadSafeListener ();;
95+ ThreadSafeListener listener = new ThreadSafeListener ();
9996 assertSame (listener , new RunNotifier ().wrapIfNotThreadSafe (listener ));
10097 }
10198
10299 @ Test
103100 public void wrapIfNotThreadSafeShouldWrapNonThreadSafeListeners () {
104- CountingListener listener = new CountingListener ();
101+ EventCollector listener = new EventCollector ();
105102 RunListener wrappedListener = new RunNotifier ().wrapIfNotThreadSafe (listener );
106103 assertThat (wrappedListener , instanceOf (SynchronizedRunListener .class ));
107104 }
108105
109- private static class FailureListener extends RunListener {
110- private Failure failure ;
111-
112- @ Override
113- public void testFailure (Failure failure ) throws Exception {
114- this .failure = failure ;
115- }
116- }
117-
118- private static class CountingListener extends RunListener {
119- final AtomicInteger fTestStarted = new AtomicInteger (0 );
120-
121- @ Override
122- public void testStarted (Description description ) throws Exception {
123- fTestStarted .incrementAndGet ();
124- }
125- }
126-
127106 @ RunListener .ThreadSafe
128- private static class ThreadSafeListener extends CountingListener {
107+ private static class ThreadSafeListener extends EventCollector {
129108 }
130109
131110}
0 commit comments