Существует MemoryAppender , но он не является частью стандартной библиотеки log4j.
Вы можете легко написать свой собственный, но если вы используете их только для модульных тестов, я, вероятно, высмеиваю Logger и утверждаю, что к нему не обращаются. Переопределите метод getLogger () в целевом классе или установите фиктивный Logger непосредственно на тип.
Использование Jmock (пример из памяти, извините за любые ошибки):
public void testDoFoo() {
Mockery mockery = new Mockery();
Logger mockLogger = mockery.mock(Logger.class);
Foo foo = new Foo();
foo.setLogger(mockLogger);
mockery.checking(new Expectations() {
{
never(mockLogger).debug(with(any(String.class));
}
};
...
//do the actual test.
//assert the mock type has never been called.
mockery.assertIsSatisfied();
}