使用自定义testInstrumentationRunner的问题



我没有发现任何关于Stack Overflow的帖子有帮助,所以我发布了我自己的问题。

我有一个自定义的testInstrumentationRunner,当设置不运行任何测试时。日志显示:

App restart successful without requiring a re-install.
Running tests
adb shell am instrument -w -m  --no-window-animation  -e debug false -e class 'com.my.app.MyFragmentTest' com.my.app.debug.test/com.my.app.CustomTestRunner
Connected to process on device

当运行正常的androidx.test.runner.AndroidJUnitRunner时,测试运行,但失败,因为我需要自定义运行器。

运行器设置与androidx类似,在:

defaultConfig {
// testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner
testInstrumentationRunner "com.my.app.CustomTestRunner"
}

它也位于androidTest文件夹下的com.my.app包中

运行程序的代码是:

package com.my.app
import ...
class CustomTestRunner: AndroidJUnitRunner() {
override fun newApplication(cl: ClassLoader?, className: String?, context: Context?): Application {
DexOpener.install(this)
Timber.i("This should print hopefully")
return super.newApplication(cl, ApplicationTest::class.java.canonicalName, context)
}
}

不确定这是否重要,但下面是应用程序类的代码,它扩展了应用程序本身使用的应用程序类:

package com.my.app
class ApplicationTest: MyApplication() {
override fun onCreate() {
super.onCreate()
appContext = applicationContext
initializeDependencyInjection()
}
override fun initializeDependencyInjection() {}
}

我有一个测试用例,我试图运行,它包含7个测试。androidx运行器在7/7测试中失败。但是当我使用自定义运行器运行时,我得到duration 0ms和0/0测试。

所以Android似乎没有检测到这个跑步者。我还在testInstrumentationRunner中使用随机名称获得相同的结果,如testInstrumentationRunner "not.a.TestRunner"

我相信你已经解决了这个问题,或者把工作换成了种植土豆或其他更有成效的工作,但我刚刚花了整个上午的时间调试这个完全相同的场景,并设法找到了一个解决方案:

您拥有的自定义检测运行程序不会被忽略,但是在您的自定义测试应用程序初始化中存在一些问题。可能在你的替代药物依赖注射中,就像我的情况一样。使用自定义运行器运行测试时,自定义测试应用程序会立即静默崩溃,但这不会在测试结果或任何其他容易看到的地方显示出来。崩溃堆栈跟踪,然而,logcat中访问。所以先解决这个问题,然后再尝试使用您的自定义测试运行器。

当测试一个库模块时,您可以在src/androidTest/AndroidManifest.xml中链接测试应用程序:

<manifest
xmlns:android="http://schemas.android.com/apk/res/android">
<application
android:name="com.my.app.ApplicationTest"/>
</manifest>

不要混合使用工具测试和单元测试:

单元测试

单元测试在本地JVM中运行并最小化执行时间。单元测试不能在不模拟活动对象的情况下测试应用程序的UI。单元测试用于测试代码的白盒测试。大多数情况下,单元测试是由开发人员编写的。您不需要连接设备来执行单元测试。

<<p>

仪器测试/strong>仪器测试用于黑盒测试。它用于在实际环境中测试应用程序的GUI及其功能。要执行Instrumentation测试,您需要一个设备/模拟器,首先在其上安装应用程序,然后执行测试。自动化测试人员参与编写仪表框架。

相关内容

  • 没有找到相关文章

最新更新