在Android Studio中将UnitTest转换为Instrumentation Test

Nou*_*vay 4 android unit-testing android-studio android-instrumentation

因此,我从一个名为MyCoolObjectTest的UnitTest开始。需要进行一些测试测试,我通过拖动将类直接在Android项目视图中从test目录移动到androidTest目录。我的UnitTest过去工作正常;除了仪器部分。但是现在它根本不起作用。我不断

Class not found: "com.mypkg.MyCoolObjectTest"Empty test suite.
Run Code Online (Sandbox Code Playgroud)

我一直在整个stackOverflow和官方文档中寻找解决方案。到目前为止没有运气。有没有人经历过类似的事情?

(如果我将其拖回测试文件夹,它将正常工作;如果我将其重新拖动到androidTest文件夹,它将再次停止工作)

我记得那是设置受测试文件夹的一种方法。但是我不再记得了。

为了获得一些见识,我想在测试中使用一些android库,例如

public String stripFormatting(String input){
    return Html.fromHtml(input).toString();
}
Run Code Online (Sandbox Code Playgroud)

这就是为什么我需要仪器。

这是我的单元测试课程,其中包含一个测试示例:

@RunWith(AndroidJUnit4.class)
public class MyCoolObjectTest {
    @Test
    public void testJustToKnow() {
        String actual = "<b>0</b>";
        String expected = "0";
        assertThat(stripFormatting(actual), equalTo(expected));
    }
    public String stripFormatting(String input) {
        return Html.fromHtml(input).toString();
    }
}
Run Code Online (Sandbox Code Playgroud)

更新

这是我得到的另一条迹线。如果单击该方法而不是该类,则会得到以下跟踪:

刚才我单击了方法而不是整个类,并获得了以下跟踪信息:

11/04 13:51:16:启动testJustToKnow()$ adb push /Users/me/StudioProjects/Myapp/app/build/outputs/apk/app-debug.apk /data/local/tmp/com.mypkg.myapp $ adb shell pm install -r“ /data/local/tmp/com.mypkg.myapp” pkg:/data/local/tmp/com.mypkg.myapp成功

$ adb push /Users/me/StudioProjects/Myapp/app/build/outputs/apk/app-debug-androidTest-unaligned.apk /data/local/tmp/com.mypkg.Myapp.test $ adb shell pm install -r “ /data/local/tmp/com.mypkg.myapp.test” pkg:/data/local/tmp/com.mypkg.myapp.test成功

运行测试

$ adb shell am instrument -w -r -e debug false -e类com.mypkg.myapp.utils.MyCoolObjectTest#testJustToKnow com.mypkg.myapp.test / android.test.InstrumentationTestRunner客户端尚未准备好。测试开始运行

junit.framework.AssertionFailedError:在android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191)的com.mypkg.myapp.utils.MyCoolObjectTest中未找到测试android.app.Instrumentation $ InstrumentationThread.run(Instrumentation.java:1959)上的android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555)

测试完成。

mur*_*urf 6

我只是有同样的问题。这是我解决的方法:

  • 在Android Studio中,转到运行>编辑配置...
  • Android JUnit标题下,选择您的测试并将其删除(减号按钮)
  • 添加新的测试配置(加号按钮)并选择Android Instrumented Tests
  • 设置以下选项:
  • 模块:应用
  • 测试:类
  • 班级:选择或输入您的班级进行仪器测试
  • 点击确定

现在一切正常。