package org.springframework.issues;
import org.apache.log4j.Appender;
import org.apache.log4j.Logger;
import org.apache.log4j.spi.LoggingEvent;
import org.junit.Test;
import org.mockito.Mockito;
import org.springframework.context.support.GenericXmlApplicationContext;
/**
* Unit test that reproduces an issue reported against SPR JIRA. @Test methods within need not pass with the green bar!
* Rather they should fail in such a way that demonstrates the reported issue.
*/
public class ReproTests {
@Test
public void isWarning() {
Logger logger = org.apache.log4j.Logger.getLogger(loggerName());
Appender appender = nothingLoggedAppender();
logger.addAppender(appender);
try {
GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
ctx.load("classpath:org/springframework/issues/ReproTests-context.xml");
ctx.refresh();
ctx.getBean("foo");
ctx.close();
} finally {
logger.removeAppender(appender);
}
}
private Appender nothingLoggedAppender() {
Appender appender = Mockito.mock(Appender.class);
Mockito.doThrow(new RuntimeException("No log message was expected")).when(appender)
.doAppend(Mockito.any(LoggingEvent.class));
return appender;
}
private String loggerName() {
try {
/*
* Using reflection to make sure this class has not been renamed to something else. This class is NOT a part
* of public API.
*/
Class<?> clazz = Class.forName("org.springframework.aop.framework.CglibAopProxy");
return clazz.getName();
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
}