3

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

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

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

提前感谢您的帮助。

4

1 回答 1

1

该类Description有一个getMethodName()方法说明

退货

如果这描述了方法调用,则方法的名称(如果不是,则为 null)

所以就叫吧

System.out.println(description.getMethodName());
于 2013-11-12T01:41:56.123 回答