Skip to content

Commit e138163

Browse files
author
daniel-bryla
committed
iluwatar#502 Adjusted tests for logger introduction
1 parent 27d6d50 commit e138163

File tree

56 files changed

+1446
-1601
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+1446
-1601
lines changed

decorator/src/test/java/com/iluwatar/decorator/TrollTest.java

+35-26
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,18 @@
2222
*/
2323
package com.iluwatar.decorator;
2424

25+
import ch.qos.logback.classic.Logger;
26+
import ch.qos.logback.classic.spi.ILoggingEvent;
27+
import ch.qos.logback.core.AppenderBase;
2528
import org.junit.After;
2629
import org.junit.Before;
2730
import org.junit.Test;
31+
import org.slf4j.LoggerFactory;
2832

29-
import java.io.PrintStream;
33+
import java.util.LinkedList;
34+
import java.util.List;
3035

3136
import static org.junit.Assert.assertEquals;
32-
import static org.mockito.Matchers.eq;
33-
import static org.mockito.Mockito.*;
34-
import static org.mockito.internal.verification.VerificationModeFactory.times;
3537

3638
/**
3739
* Date: 12/7/15 - 7:26 PM
@@ -40,31 +42,16 @@
4042
*/
4143
public class TrollTest {
4244

43-
/**
44-
* The mocked standard out stream, required since the actions don't have any influence on other
45-
* objects, except for writing to the std-out using {@link System#out}
46-
*/
47-
private final PrintStream stdOutMock = mock(PrintStream.class);
45+
private InMemoryAppender appender;
4846

49-
/**
50-
* Keep the original std-out so it can be restored after the test
51-
*/
52-
private final PrintStream stdOutOrig = System.out;
53-
54-
/**
55-
* Inject the mocked std-out {@link PrintStream} into the {@link System} class before each test
56-
*/
5747
@Before
5848
public void setUp() {
59-
System.setOut(this.stdOutMock);
49+
appender = new InMemoryAppender(Troll.class);
6050
}
6151

62-
/**
63-
* Removed the mocked std-out {@link PrintStream} again from the {@link System} class
64-
*/
6552
@After
6653
public void tearDown() {
67-
System.setOut(this.stdOutOrig);
54+
appender.stop();
6855
}
6956

7057
@Test
@@ -73,12 +60,34 @@ public void testTrollActions() throws Exception {
7360
assertEquals(10, troll.getAttackPower());
7461

7562
troll.attack();
76-
verify(this.stdOutMock, times(1)).println(eq("The troll swings at you with a club!"));
63+
assertEquals("The troll swings at you with a club!", appender.getLastMessage());
7764

7865
troll.fleeBattle();
79-
verify(this.stdOutMock, times(1)).println(eq("The troll shrieks in horror and runs away!"));
66+
assertEquals("The troll shrieks in horror and runs away!", appender.getLastMessage());
8067

81-
verifyNoMoreInteractions(this.stdOutMock);
68+
assertEquals(2, appender.getLogSize());
8269
}
8370

84-
}
71+
private class InMemoryAppender extends AppenderBase<ILoggingEvent> {
72+
73+
private List<ILoggingEvent> log = new LinkedList<>();
74+
75+
public InMemoryAppender(Class clazz) {
76+
((Logger) LoggerFactory.getLogger(clazz)).addAppender(this);
77+
start();
78+
}
79+
80+
@Override
81+
protected void append(ILoggingEvent eventObject) {
82+
log.add(eventObject);
83+
}
84+
85+
public String getLastMessage() {
86+
return log.get(log.size() - 1).getMessage();
87+
}
88+
89+
public int getLogSize() {
90+
return log.size();
91+
}
92+
}
93+
}

delegation/src/test/java/com/iluwatar/delegation/simple/DelegateTest.java

+47-8
Original file line numberDiff line numberDiff line change
@@ -22,44 +22,83 @@
2222
*/
2323
package com.iluwatar.delegation.simple;
2424

25+
import ch.qos.logback.classic.Logger;
26+
import ch.qos.logback.classic.spi.ILoggingEvent;
27+
import ch.qos.logback.core.AppenderBase;
2528
import com.iluwatar.delegation.simple.printers.CanonPrinter;
2629
import com.iluwatar.delegation.simple.printers.EpsonPrinter;
2730
import com.iluwatar.delegation.simple.printers.HpPrinter;
28-
import org.junit.Rule;
31+
import org.junit.After;
32+
import org.junit.Before;
2933
import org.junit.Test;
30-
import org.junit.contrib.java.lang.system.SystemOutRule;
34+
import org.slf4j.LoggerFactory;
35+
36+
import java.util.LinkedList;
37+
import java.util.List;
3138

3239
import static org.junit.Assert.assertEquals;
3340

3441
public class DelegateTest {
3542

36-
private static final String MESSAGE = "Test Message Printed";
43+
private InMemoryAppender appender;
44+
45+
@Before
46+
public void setUp() {
47+
appender = new InMemoryAppender();
48+
}
3749

38-
@Rule
39-
public final SystemOutRule systemOutRule = new SystemOutRule().enableLog();
50+
@After
51+
public void tearDown() {
52+
appender.stop();
53+
}
54+
55+
private static final String MESSAGE = "Test Message Printed";
4056

4157
@Test
4258
public void testCanonPrinter() throws Exception {
4359
PrinterController printerController = new PrinterController(new CanonPrinter());
4460
printerController.print(MESSAGE);
4561

46-
assertEquals("Canon Printer : Test Message Printed", systemOutRule.getLog());
62+
assertEquals("Canon Printer : Test Message Printed", appender.getLastMessage());
4763
}
4864

4965
@Test
5066
public void testHpPrinter() throws Exception {
5167
PrinterController printerController = new PrinterController(new HpPrinter());
5268
printerController.print(MESSAGE);
5369

54-
assertEquals("HP Printer : Test Message Printed", systemOutRule.getLog());
70+
assertEquals("HP Printer : Test Message Printed", appender.getLastMessage());
5571
}
5672

5773
@Test
5874
public void testEpsonPrinter() throws Exception {
5975
PrinterController printerController = new PrinterController(new EpsonPrinter());
6076
printerController.print(MESSAGE);
6177

62-
assertEquals("Epson Printer : Test Message Printed", systemOutRule.getLog());
78+
assertEquals("Epson Printer : Test Message Printed", appender.getLastMessage());
79+
}
80+
81+
private class InMemoryAppender extends AppenderBase<ILoggingEvent> {
82+
83+
private List<ILoggingEvent> log = new LinkedList<>();
84+
85+
public InMemoryAppender() {
86+
((Logger) LoggerFactory.getLogger("root")).addAppender(this);
87+
start();
88+
}
89+
90+
@Override
91+
protected void append(ILoggingEvent eventObject) {
92+
log.add(eventObject);
93+
}
94+
95+
public String getLastMessage() {
96+
return log.get(log.size() - 1).getFormattedMessage();
97+
}
98+
99+
public int getLogSize() {
100+
return log.size();
101+
}
63102
}
64103

65104
}

dependency-injection/src/test/java/com/iluwatar/dependency/injection/AdvancedWizardTest.java

+22-8
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,31 @@
2222
*/
2323
package com.iluwatar.dependency.injection;
2424

25+
import com.iluwatar.dependency.injection.utils.InMemoryAppender;
26+
import org.junit.After;
27+
import org.junit.Before;
2528
import org.junit.Test;
2629

27-
import static org.mockito.Mockito.times;
28-
import static org.mockito.Mockito.verify;
29-
import static org.mockito.Mockito.verifyNoMoreInteractions;
30+
import static org.junit.Assert.assertEquals;
3031

3132
/**
3233
* Date: 12/10/15 - 8:40 PM
3334
*
3435
* @author Jeroen Meulemeester
3536
*/
36-
public class AdvancedWizardTest extends StdOutTest {
37+
public class AdvancedWizardTest {
38+
39+
private InMemoryAppender appender;
40+
41+
@Before
42+
public void setUp() {
43+
appender = new InMemoryAppender(Tobacco.class);
44+
}
45+
46+
@After
47+
public void tearDown() {
48+
appender.stop();
49+
}
3750

3851
/**
3952
* Test if the {@link AdvancedWizard} smokes whatever instance of {@link Tobacco} is passed to him
@@ -51,12 +64,13 @@ public void testSmokeEveryThing() throws Exception {
5164
advancedWizard.smoke();
5265

5366
// Verify if the wizard is smoking the correct tobacco ...
54-
verify(getStdOutMock(), times(1)).println("AdvancedWizard smoking " + tobacco.getClass().getSimpleName());
67+
assertEquals("AdvancedWizard smoking " + tobacco.getClass().getSimpleName(), appender.getLastMessage());
5568

56-
// ... and nothing else is happening.
57-
verifyNoMoreInteractions(getStdOutMock());
5869
}
5970

71+
// ... and nothing else is happening.
72+
assertEquals(tobaccos.length, appender.getLogSize());
73+
6074
}
6175

62-
}
76+
}

dependency-injection/src/test/java/com/iluwatar/dependency/injection/GuiceWizardTest.java

+24-14
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,31 @@
2525
import com.google.inject.AbstractModule;
2626
import com.google.inject.Guice;
2727
import com.google.inject.Injector;
28-
28+
import com.iluwatar.dependency.injection.utils.InMemoryAppender;
29+
import org.junit.After;
30+
import org.junit.Before;
2931
import org.junit.Test;
3032

31-
import static org.mockito.Mockito.times;
32-
import static org.mockito.Mockito.verify;
33-
import static org.mockito.Mockito.verifyNoMoreInteractions;
33+
import static org.junit.Assert.assertEquals;
3434

3535
/**
3636
* Date: 12/10/15 - 8:57 PM
3737
*
3838
* @author Jeroen Meulemeester
3939
*/
40-
public class GuiceWizardTest extends StdOutTest {
40+
public class GuiceWizardTest {
41+
42+
private InMemoryAppender appender;
43+
44+
@Before
45+
public void setUp() {
46+
appender = new InMemoryAppender(Tobacco.class);
47+
}
48+
49+
@After
50+
public void tearDown() {
51+
appender.stop();
52+
}
4153

4254
/**
4355
* Test if the {@link GuiceWizard} smokes whatever instance of {@link Tobacco} is passed to him
@@ -55,12 +67,11 @@ public void testSmokeEveryThingThroughConstructor() throws Exception {
5567
guiceWizard.smoke();
5668

5769
// Verify if the wizard is smoking the correct tobacco ...
58-
verify(getStdOutMock(), times(1)).println("GuiceWizard smoking " + tobacco.getClass().getSimpleName());
59-
60-
// ... and nothing else is happening.
61-
verifyNoMoreInteractions(getStdOutMock());
70+
assertEquals("GuiceWizard smoking " + tobacco.getClass().getSimpleName(), appender.getLastMessage());
6271
}
6372

73+
// ... and nothing else is happening.
74+
assertEquals(tobaccos.length, appender.getLogSize());
6475
}
6576

6677
/**
@@ -89,12 +100,11 @@ protected void configure() {
89100
guiceWizard.smoke();
90101

91102
// Verify if the wizard is smoking the correct tobacco ...
92-
verify(getStdOutMock(), times(1)).println("GuiceWizard smoking " + tobaccoClass.getSimpleName());
93-
94-
// ... and nothing else is happening.
95-
verifyNoMoreInteractions(getStdOutMock());
103+
assertEquals("GuiceWizard smoking " + tobaccoClass.getSimpleName(), appender.getLastMessage());
96104
}
97105

106+
// ... and nothing else is happening.
107+
assertEquals(tobaccos.length, appender.getLogSize());
98108
}
99109

100-
}
110+
}

dependency-injection/src/test/java/com/iluwatar/dependency/injection/SimpleWizardTest.java

+20-5
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,31 @@
2222
*/
2323
package com.iluwatar.dependency.injection;
2424

25+
import com.iluwatar.dependency.injection.utils.InMemoryAppender;
26+
import org.junit.After;
27+
import org.junit.Before;
2528
import org.junit.Test;
2629

27-
import static org.mockito.Mockito.*;
30+
import static org.junit.Assert.assertEquals;
2831

2932
/**
3033
* Date: 12/10/15 - 8:26 PM
3134
*
3235
* @author Jeroen Meulemeester
3336
*/
34-
public class SimpleWizardTest extends StdOutTest {
37+
public class SimpleWizardTest {
38+
39+
private InMemoryAppender appender;
40+
41+
@Before
42+
public void setUp() {
43+
appender = new InMemoryAppender(Tobacco.class);
44+
}
45+
46+
@After
47+
public void tearDown() {
48+
appender.stop();
49+
}
3550

3651
/**
3752
* Test if the {@link SimpleWizard} does the only thing it can do: Smoke it's {@link
@@ -41,8 +56,8 @@ public class SimpleWizardTest extends StdOutTest {
4156
public void testSmoke() {
4257
final SimpleWizard simpleWizard = new SimpleWizard();
4358
simpleWizard.smoke();
44-
verify(getStdOutMock(), times(1)).println("SimpleWizard smoking OldTobyTobacco");
45-
verifyNoMoreInteractions(getStdOutMock());
59+
assertEquals("SimpleWizard smoking OldTobyTobacco", appender.getLastMessage());
60+
assertEquals(1, appender.getLogSize());
4661
}
4762

48-
}
63+
}

0 commit comments

Comments
 (0)