2
2
3
3
import static org .assertj .core .api .Assertions .assertThat ;
4
4
5
+ import java .util .List ;
6
+ import java .util .regex .Pattern ;
7
+
5
8
import org .junit .After ;
6
9
import org .junit .Before ;
7
10
import org .junit .Test ;
12
15
import ch .qos .logback .classic .LoggerContext ;
13
16
14
17
public class BusinessWorkerUnitTest {
18
+
15
19
private static MemoryAppender memoryAppender ;
16
20
private static final String LOGGER_NAME = "com.baeldung.junit.log" ;
17
21
private static final String MSG = "This is a test message!!!" ;
@@ -37,12 +41,54 @@ public void cleanUp() {
37
41
public void test () {
38
42
BusinessWorker worker = new BusinessWorker ();
39
43
worker .generateLogs (MSG );
40
-
44
+
41
45
// I check that I only have 4 messages (all but trace)
42
46
assertThat (memoryAppender .countEventsForLogger (LOGGER_NAME )).isEqualTo (4 );
43
47
// I look for a specific message at a specific level, and I only have 1
44
- assertThat (memoryAppender .search (MSG , Level .INFO ).size ()).isEqualTo (1 );
48
+ assertThat (memoryAppender .search (MSG , Level .INFO )
49
+ .size ()).isEqualTo (1 );
45
50
// I check that the entry that is not present is the trace level
46
51
assertThat (memoryAppender .contains (MSG , Level .TRACE )).isFalse ();
47
52
}
53
+
54
+ @ Test
55
+ public void whenMultipleLogLevel_thenReturnExpectedResult () {
56
+ BusinessWorker worker = new BusinessWorker ();
57
+ worker .generateLogs ("Transaction started for Order ID: 1001" );
58
+ assertThat (memoryAppender .countEventsForLogger (LOGGER_NAME )).isEqualTo (4 );
59
+ assertThat (memoryAppender .search ("Transaction started" , Level .INFO )
60
+ .size ()).isEqualTo (1 );
61
+ assertThat (memoryAppender .search ("Transaction started" , Level .WARN )
62
+ .size ()).isEqualTo (1 );
63
+ assertThat (memoryAppender .search ("Transaction started" , Level .ERROR )
64
+ .size ()).isEqualTo (1 );
65
+ assertThat (memoryAppender .search ("Transaction started" , Level .TRACE )).isEmpty ();
66
+ }
67
+
68
+ @ Test
69
+ public void whenUsingPattern_thenReturnExpectedResult () {
70
+ BusinessWorker worker = new BusinessWorker ();
71
+ worker .generateLogs ("Order processed successfully for Order ID: 12345" );
72
+
73
+ Pattern orderPattern = Pattern .compile (".*Order ID: \\ d{5}.*" );
74
+
75
+ assertThat (memoryAppender .containsPattern (orderPattern , Level .INFO )).isTrue ();
76
+ assertThat (memoryAppender .containsPattern (orderPattern , Level .WARN )).isTrue ();
77
+ assertThat (memoryAppender .containsPattern (orderPattern , Level .ERROR )).isTrue ();
78
+ assertThat (memoryAppender .containsPattern (orderPattern , Level .TRACE )).isFalse ();
79
+ }
80
+
81
+ @ Test
82
+ public void whenUsingMultiplePatterns_thenReturnExpectedResult () {
83
+ BusinessWorker worker = new BusinessWorker ();
84
+ worker .generateLogs ("User Login: username=user123, timestamp=2024-11-25T10:15:30" );
85
+
86
+ List <Pattern > patterns = List .of (
87
+ Pattern .compile (".*username=user\\ w+.*" ),
88
+ Pattern .compile (".*timestamp=\\ d{4}-\\ d{2}-\\ d{2}T\\ d{2}:\\ d{2}:\\ d{2}.*" )
89
+ );
90
+
91
+ assertThat (memoryAppender .containsPatterns (patterns , Level .INFO )).isTrue ();
92
+ assertThat (memoryAppender .containsPatterns (patterns , Level .WARN )).isTrue ();
93
+ }
48
94
}
0 commit comments