我对Groovy代码的所有测试都是这样的
public void testButtons() {
try {
page.getButtons();
} catch (Exception e) {
throw org.codehaus.groovy.runtime.StackTraceUtils.sanitize(e);
}
}
因为我需要清理出现的任何可能的StackTrace(否则它很难读,因为它有所有的Groovy元代码)。有没有办法指定所有JUnit测试以特定方式包装(如错误处理程序)?
注意:我在Eclipse中运行这些,但是如果有一种方法可以在IntelliJ或Netbeans中执行此操作,那么这将是一件好事。
答案 0 :(得分:7)
是的,使用规则。基本上你必须有一个实现MethodRule接口的类,它通过替换它自己的包含try / catch的Statement实现来处理apply方法中的异常处理。
要使用规则,您可以在测试类中定义一个字段,如下所示:
@Rule public MethodRule exceptionCleanser = new ExceptionCleanser();
第一个剪切实现可能看起来像这样:
public class ExceptionCleanser implements MethodRule {
public Statement apply(final Statement base, FrameworkMethod method, Object target) {
return new Statement() {
public void evaluate() throws Throwable {
try {
base.evaluate();
} catch (Exception e) {
throw org.codehaus.groovy.runtime.StackTraceUtils.sanitize(e);
}
}
};
}
}
以上是完全未经测试的,但你应该能够理解。 @Rule注释是在JUnit 4.7中引入的,因此您可能需要更新才能使用它。