如何使JUnit4记录所有未被丢弃的异常?

时间:2011-01-16 08:39:49

标签: java unit-testing logging

嘿,我正在使用SpringJUnit4ClassRunner,并使用eclipse UI运行大型测试套件。 当测试失败时,我可以在junit视图中看到异常和完整堆栈跟踪。我希望他们也被记录下来 (使用由apache.commons.logging包装的log4j)

3 个答案:

答案 0 :(得分:2)

扩展SpringJUnit4ClassRunner:

public class MySpringJUnit4ClassRunner extends SpringJUnit4ClassRunner{
    @Override
    public void run(RunNotifier notifier) {
    EachTestNotifier testNotifier= new EachTestNotifier(notifier,
            getDescription());
    try {
        Statement statement= classBlock(notifier);
        statement.evaluate();
    } catch (AssumptionViolatedException e) {
        testNotifier.fireTestIgnored();
        Logger.error(e);
    } catch (StoppedByUserException e) {
        Logger.error(e);
        throw e;
    } catch (Throwable e) {
        testNotifier.addFailure(e);
        Logger.error(e);
    }
  }
 //...
}

然后使用MySpringJUnit4ClassRunner作为跑步者。

答案 1 :(得分:0)

如果您使用maven进行构建,它会附带一个确定的fire插件,提供有关测试用例的详细信息报告。在eclipse中,您可以将应用程序控制台记录下来。我相信它是在应用程序的runco​​nfig中。虽然我不知道确切的细节。

答案 2 :(得分:0)

如果将log4j添加到项目中,则可以使用以下命令记录异常:

你的测试类中的init logger:

 private static final Logger logger = Logger.getLogger(YourClassNameclass);

这里记录消息的代码:

try{
 your code here...
} catch (SomeException e){
logger.error("Description of your error", e);
}

这里是log4j.properties中用于在文件中记录消息的模式:

log4j.rootLogger=ALL,A1

log4j.appender.A1=org.apache.log4j.FileAppender
log4j.appender.A1.File=Testlogfile.log
log4j.appender.A1.append=false
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=\
%-4r [%t] %-5p %c %x -%m%n
祝你好运! :)