不幸的是,没有很好的方法挂接到JUnit。对于使用TDD开发的框架,它是令人震惊的敌意。
请@Rule
改用:
import org.junit.rules.TestWatcher;
import org.junit.runner.Description;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Log the currently running test.
*
* <p>Typical usage:
*
* <p>{@code @Rule public LogTestName logTestName = new LogTestName();}
*
* <p>See also:
* <br>{@link org.junit.Rule}
* <br>{@link org.junit.rules.TestWatcher}
*/
public class LogTestName extends TestWatcher {
private final static Logger log = LoggerFactory.getLogger( "junit.logTestName" );
@Override
protected void starting( Description description ) {
log.debug( "Test {}", description.getmethodName() );
}
}
笔记:
我正在使用静态记录器。这使代码的执行速度更快,但是我的主要理由是记录测试名称是一个贯穿各领域的问题:我想在中央位置启用/禁用此日志记录,而不是为每个测试类配置它。
另一个原因是,我有一些工具可以处理构建输出,并且更容易针对固定模式进行配置:-)
如果您不希望这样做,则只需购买的记录器即可description.getTestClass()
。