3 回答
TA贡献1848条经验 获得超2个赞
JUnit 4.7似乎使用TestName-Rule添加了此功能。看起来这将为您获取方法名称:
import org.junit.Rule;
public class NameRuleTest {
@Rule public TestName name = new TestName();
@Test public void testA() {
assertEquals("testA", name.getMethodName());
}
@Test public void testB() {
assertEquals("testB", name.getMethodName());
}
}
TA贡献1848条经验 获得超10个赞
JUnit 4.9.x及更高版本
从JUnit 4.9开始,TestWatchman不推荐使用TestWatcher该类,而推荐使用该类:
@Rule
public TestRule watcher = new TestWatcher() {
protected void starting(Description description) {
System.out.println("Starting test: " + description.getMethodName());
}
};
注意:必须声明包含类public。
JUnit 4.7.x-4.8.x
以下方法将打印类中所有测试的方法名称:
@Rule
public MethodRule watchman = new TestWatchman() {
public void starting(FrameworkMethod method) {
System.out.println("Starting test: " + method.getName());
}
};
TA贡献1836条经验 获得超3个赞
JUnit 5及更高版本
在JUnit 5中,您可以注入TestInfo,从而简化了提供给测试方法的测试元数据。例如:
@Test
@DisplayName("This is my test")
@Tag("It is my tag")
void test1(TestInfo testInfo) {
assertEquals("This is my test", testInfo.getDisplayName());
assertTrue(testInfo.getTags().contains("It is my tag"));
}
添加回答
举报