假设我有这样的课程:
public class MyClass {
public static final Logger LOG = Logger.getLogger(MyClass.class);
public void myMethod(String condition) {
if (condition.equals("terrible")) {
LOG.error("This is terrible!");
return;
}
//rest of logic in method
}
}
我的单元测试MyClass
看起来像这样:
@Test
public void testTerribleCase() throws ModuleException {
myMethod("terrible");
//Log should contain "This is terrible!" or assert that error was logged
}
有什么方法可以确定日志包含特定的字符串“这太糟糕了”?或者更好的是,有没有一种方法可以确定它是否记录了错误而无需查找特定的字符串值?
创建自定义过滤器来查找消息并记录是否曾看到该消息。
@Test
public void testTerribleCase() throws ModuleException {
class TerribleFilter implements Filter {
boolean seen;
@Override
public boolean isLoggable(LogRecord record) {
if ("This is terrible!".equals(record.getMessage())) {
seen = true;
}
return true;
}
}
Logger log = Logger.getLogger(MyClass.class.getName());
TerribleFilter tf = new TerribleFilter();
log.setFilter(tf);
try {
myMethod("terrible");
assertTrue(tf.seen);
} finally {
log.setFilter(null);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)