junit,获取失败的方法名称

时间:2013-11-12 01:40:13

标签: java junit

我正在使用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。有没有办法可以捕获失败方法的名称?

我也可以打印堆栈跟踪吗?

另外,如果我可以避免在实际测试中为此目的添加额外的代码,那就太棒了。因为我不想为我的每个测试用例重复这些代码。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

Description类有getMethodName()方法表明

  

<强>返回

     

如果这描述了方法调用,则该方法的名称(或null)   如果没有)

所以只需称呼它

System.out.println(description.getMethodName());