我正在使用Junit,我想在测试失败时记录测试方法名称和一些堆栈跟踪,有没有办法做到这一点?
我的示例代码如下:
public class TestGoogleHomePage extends Browser {
@Test
public void testLoadGoogle() {
...............
//assume this case will fail
}
@Test
public void testSearchGoogle() {
.......
}
@Rule
public TestWatcher watchman = new TestWatcher() {
@Override
protected void failed(Throwable e, Description description) {
System.out.println("test fail");
System.out.println(Thread.currentThread().getStackTrace()[1]
.getMethodName());
}
@Override
protected void succeeded(Description description) {
......
}
};
}
语句 System.out.println(Thread.currentThread()。getStackTrace()[1] .getMethodName()); 将打印方法失败,而不是testLoadGoogle。有没有办法可以捕获失败方法的名称?
我也可以打印堆栈跟踪吗?
另外,如果我可以避免在实际测试中为此目的添加额外的代码,那就太棒了。因为我不想为我的每个测试用例重复这些代码。
感谢您的帮助。
答案 0 :(得分:1)
Description
类有getMethodName()
方法表明
<强>返回强>
如果这描述了方法调用,则该方法的名称(或null) 如果没有)
所以只需称呼它
System.out.println(description.getMethodName());