How to obtain test case name in JUnit 4 at runtime?
In JUnit 4.7, you can also get the name of the currently executed test method. May be nice when logging.
Taken from JUnit 4.7 Release Notes (read them here at github) :
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());
}
}
OK. I've found another approach [somewhere on the Internet](http://www.nabble.com/What-happened-to-getName()--td23456371.html):
@RunWith(Interceptors.class)
public class NameTest {
@Interceptor public TestName name = new TestName();
@Test public void funnyName() {
assertEquals("funnyName", name.getMethodName());
}
}
public class FooTest {
@Rule
final public TestRule traceTestWatcher = new TestWatcher() {
@Override
protected void starting(Description d) {
System.out.println(d);
}
};
@Test
public void testBar() {
...
}
@Test
public void testBaz() {
...
}
}