Skip to content

Instantly share code, notes, and snippets.

@jasonheecs
Created September 7, 2022 18:51
Show Gist options
  • Save jasonheecs/4df47adad9e03ef7131728b6ed88f222 to your computer and use it in GitHub Desktop.
Save jasonheecs/4df47adad9e03ef7131728b6ed88f222 to your computer and use it in GitHub Desktop.
Sample Unit test illustrating how to test log4j2 loggers using a custom appender
package com.example
import com.example.appender.TestAppender
import org.apache.logging.log4j.LogManager
import org.apache.logging.log4j.core.LoggerContext
import org.apache.logging.log4j.core.config.Configuration
import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import kotlin.test.assertEquals
internal class FooTest {
private val foo = Foo()
private lateinit var testAppender: TestAppender
private lateinit var logConfig: Configuration
@BeforeEach
private fun setUp() {
val ctx = LogManager.getContext(false) as LoggerContext
logConfig = ctx.configuration
// no need to output test log data to stdout
logConfig.rootLogger.removeAppender("Console")
testAppender = logConfig.appenders["TestAppender"] as TestAppender
}
@Test
fun `bar should add a log message`() {
foo.bar()
assertEquals(1, testAppender.getMessages().size)
}
@AfterEach
private fun teardown() {
testAppender.clearMessages()
logConfig.addAppender(logConfig.getAppender("Console"))
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment