我们怎样才能得到断言失败的方法的名称

时间:2016-06-23 11:51:04

标签: junit

有没有办法以编程方式获取在JUnit测试用例中失败的方法的名称? 即如果@Test中的Assert.assertTrue(ClassName.methodName)失败,我只能获得@Test方法的名称,该方法具有断言但不能获得断言失败的methodName。 我们有近300个JUnit测试,每个测试都有自己的@BeforeClass,@ Before,@ Test,@ After和@AfterClass方法,并希望记录断言失败的方法名称。

1 个答案:

答案 0 :(得分:0)

看看https://github.com/swfsm/junit-fail-logger。它是一个注释处理器,在编译时扫描用org.junit.Test注释的方法,并用try catch块包装断言,以便记录失败的断言。
所以

assertTrue(myMethod(""));

将转换为

try {
    assertTrue(myMethod());
} catch (AssertionError e) {
    System.err.println("assertTrue(myMethod())")
    throw(e);
}

为日志记录调用的方法是可配置的,可以是任何接受String参数的静态方法(参数值也是可配置的)。