我想知道用 powermock(和 mockito)模拟 org.apache.log4j 的最简单和最简洁的方法是什么。
我尝试了一些方法(我不会在这里说明),但还没有找到实现我想要的方法。我创建了一个简单的类来测试下面,我想调用 run 方法并验证 log.info 消息是否已被调用。我该怎么做呢?我敢肯定,当您知道如何操作时,这很容易!
(我正在使用@Rule,因为我想在弹簧测试下运行,但这应该没有区别)。
感谢您提供正确的代码。
import org.apache.log4j.Logger;
import org.junit.Rule;
import org.junit.Test;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.rule.PowerMockRule;
public class MockLog4JTest
{
@Rule
public PowerMockRule rule = new PowerMockRule();
private static class ClassUnderTest
{
private static Logger logger = Logger.getLogger(ClassUnderTest.class);
public void run() {
logger.info("Hello.");
}
}
@Test
public void testLog()
{
ClassUnderTest classUnderTest = new ClassUnderTest();
classUnderTest.run();
}
}