[英]Android instrumented test no tests found
我是 Android 仪器化单元测试的新手。 我有一个看起来像这样的简单测试。 这是在仪器测试中; 在我真正编写一个实际的插桩测试之前,我只想测试一个简单的:
@RunWith(AndroidJUnit4.class)
@SmallTest
public class AddressBookKeepingInstrumentedTest {
public static final String TEST_STRING = "This is a string";
public static final long TEST_LONG = 12345678L;
@Test
public void test_simple() {
assertEquals(2,1+1);
}
}
当我运行它时,出现以下错误:
junit.framework.AssertionFailedError: No tests found in com.example.myfirstapp.AddressBookKeepingInstrumentedTest
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1729)
Tests ran to completion.
Gradle 构建在此之前成功通过。 任何想法为什么会这样?
请将以下内容添加到您的 build.gradle 并将您的测试类放入 androidTest 文件夹中
android {
defaultConfig {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
}
我最近尝试了接受的答案,但是在尝试运行时它给了我一个进程崩溃错误。 如果你得到这个,你应该使用:
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
来源: 由于“进程崩溃”,仪器运行失败。
这篇文章对我有帮助,只需将您的测试方法重命名为“test...”,例如testMethod()
造成这种情况的典型原因可以看作是 Logcat 中的异常。
我有一个关于在 < API 21 上运行的检测 multidex 的特定问题,我必须在 androidx.test.runner.AndroidJUnitRunner 的子类上安装androidx.test.runner.AndroidJUnitRunner
,并覆盖:
AndroidJUnitRunner::createTestRequestBuilder
TestRequestBuilder::createClassPathScanner
ClassPathScanner::getClassPathEntries
的实现为:
dex
文件dexlib2
以获取类型名称。Ljava/lang/String;
-> java.lang.string
这是因为ClassPathScanner
使用dalvik.system.DexFile
,它在 API 16 上只读取 APK,然后只读取classes.dex
出现此错误消息的另一个原因是当您有一个用 Java 实现的 Android 应用程序和用 Kotlin 实现的测试用例时。 如果是这种情况,请确保您的 gradle 文件中有以下几行:
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
确保在您的应用程序级 build.gradle 文件中添加 testInstrumentationRunner,例如:-
android{
...
defaultConfig {
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
...
}
如果您使用的是 AndroidX,那么上述内容将适用于 Android 支持库,使用“android.support.test.runner.AndroidJUnitRunner”。
确保您在应用程序的build.gradle
文件中添加了正确的依赖项:
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
即使您不使用 Expresso,任何仪器测试都需要它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.