我是Android仪器化单元测试的新手。我有一个简单的测试,看起来像这样。这是在 Jmeter 测试中;在我真正编写一个实际的仪器化测试之前,我只想测试一个简单的:
@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构建已成功通过。知道为什么会这样吗
6条答案
按热度按时间7gcisfzg1#
请将以下内容添加到您的
build.gradle
中,并将您的测试类放入androidTest
文件夹中:对于AndroidX项目,您应该用途:
krcsximq2#
我最近尝试了接受的答案,但它给了我一个进程崩溃错误时,试图运行。如果你得到这个,你应该用途:
来源:Instrumentation run failed due to 'Process crashed.'
h9vpoimq3#
这种情况的典型原因可以看作是Logcat中的异常。
我遇到了一个关于在< API 21上运行的插装式multidex的具体问题,我必须在
androidx.test.runner.AndroidJUnitRunner
的子类上安装MultiDex,并覆盖:AndroidJUnitRunner::createTestRequestBuilder
TestRequestBuilder::createClassPathScanner
ClassPathScanner::getClassPathEntries
,实现为:dex
文件dexlib2
获取类型名称。Ljava/lang/String;
->java.lang.string
这是因为
ClassPathScanner
使用dalvik.system.DexFile
,而dalvik.system.DexFile
在API 16上只读取APK,然后只读取classes.dex
slhcrj9b4#
得到此错误消息的另一个原因是当您使用Java实现Android应用程序并使用Kotlin实现测试用例时。如果是这种情况,请确保在gradle文件中包含以下行:
koaltpgm5#
This post帮了我的忙,只需要将测试方法重命名为“test...”,比如
testMethod()
6jygbczu6#
确保在应用的
build.gradle
文件中添加了正确的依赖项:任何 Jmeter 测试都需要Expresso,即使您不使用它。