如何解决如何将规则应用于 AndroidJUnitRunner 中的所有测试用例?
我正在尝试将 TestWatcher 作为规则应用于由特定运行程序运行的所有测试用例。
元数据收集器:
class MetadataCollector : TestWatcher() { ... }
TestRunner:
class TestRunner : AndroidJUnitRunner() {
override fun onCreate(arguments: Bundle?) {
super.onCreate(arguments)
}
override fun newApplication(cl: ClassLoader?,className: String?,context: Context?): Application {
return super.newApplication(cl,TestApplication::class.java.name,context)
}
}
我的所有测试类目前都需要将 MetadataCollector()
初始化为规则:
测试类:
@JvmField @Rule val collector = MetadataCollector()
有没有办法可以为运行程序的每个测试用例自动创建此规则的实例?理想情况下,这是为了避免在每个测试类中重复创建 @Rule
。
不幸的是,我目前坚持使用 JUnit 4。 :(
解决方法
有一种更好的方法可以做到这一点,即向您的测试运行程序中注入一个 RunListener 实例。在您的 gradle 配置中,您需要:
defaultConfig.testInstrumentationRunner = "com.mypackage.MyTestRunnerClassName"
defaultConfig.testInstrumentationRunnerArgument("listener","com.mypackage.MyRunListenerClassName")
并在代码中创建一个RunListenerClassName来实现对应的钩子
class MyRunListener : RunListener() {
// impl
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。