有没有办法以编程方式获取在JUnit测试用例中失败的方法的名称? 即如果@Test中的Assert.assertTrue(ClassName.methodName)失败,我只能获得@Test方法的名称,该方法具有断言但不能获得断言失败的methodName。 我们有近300个JUnit测试,每个测试都有自己的@BeforeClass,@ Before,@ Test,@ After和@AfterClass方法,并希望记录断言失败的方法名称。
答案 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
参数的静态方法(参数值也是可配置的)。