Сложным способом является создание собственного Runner путем создания подкласса org.junit.runners.BlockJUnit4ClassRunner.
Затем вы можете сделать что-то вроде этого:
public class NameAwareRunner extends BlockJUnit4ClassRunner {
public NameAwareRunner(Class<?> aClass) throws InitializationError {
super(aClass);
}
@Override
protected Statement methodBlock(FrameworkMethod frameworkMethod) {
System.err.println(frameworkMethod.getName());
return super.methodBlock(frameworkMethod);
}
}
Затем для каждого тестового класса вам нужно добавить аннотацию @RunWith (NameAwareRunner.class). В качестве альтернативы вы можете поместить эту аннотацию в суперкласс Test, если не хотите каждый раз вспоминать ее. Это, конечно, ограничивает ваш выбор бегунов, но это может быть приемлемым.
Кроме того, может потребоваться немного кунг-фу, чтобы вывести текущее имя теста из Runner в вашу среду, но это, по крайней мере, даст вам имя.