Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android studio中将UnitTest转换为Instrumentation Test_Android_Unit Testing_Android Studio_Android Instrumentation - Fatal编程技术网

在android studio中将UnitTest转换为Instrumentation Test

在android studio中将UnitTest转换为Instrumentation Test,android,unit-testing,android-studio,android-instrumentation,Android,Unit Testing,Android Studio,Android Instrumentation,所以我从一个名为MyColoObjectTest的单元测试开始。需要进行一些插装测试,我通过拖动将Android项目视图中的类从test目录移动到androidTest目录。我的单元测试过去工作得很好;仪器部分除外。但现在它根本不起作用。我一直在 Class not found: "com.mypkg.MyCoolObjectTest"Empty test suite. 我一直在寻找stackOverflow和官方文件的解决方案。到目前为止运气不好。有没有人经历过类似的事情 (如果我将其拖回测

所以我从一个名为MyColoObjectTest的单元测试开始。需要进行一些插装测试,我通过拖动将
Android
项目视图中的类从
test
目录移动到
androidTest
目录。我的单元测试过去工作得很好;仪器部分除外。但现在它根本不起作用。我一直在

Class not found: "com.mypkg.MyCoolObjectTest"Empty test suite.
我一直在寻找stackOverflow和官方文件的解决方案。到目前为止运气不好。有没有人经历过类似的事情

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

我记得这是一种测试文件夹的方法。但我已经不记得了

为了了解一些情况,我想在测试中使用一些android库,例如

public String stripFormatting(String input){
    return Html.fromHtml(input).toString();
}
这就是我需要仪器的原因

下面是我的单元测试类,以一个测试为例:

@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();
    }
}
@RunWith(AndroidJUnit4.class)
公共类mycoloobjecttest{
@试验
public void testJustToKnow(){
字符串实际值=“0”;
字符串应为=“0”;
资产(stripFormatting(实际)、equalTo(预期));
}
公共字符串条带格式(字符串输入){
返回Html.fromHtml(input.toString();
}
}
更新

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

刚才我点击了方法而不是整个类,得到了如下跟踪:

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

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

运行测试

$adb shell am仪器-w-r-e调试错误-e类 com.mypkg.myapp.utils.mycoloobjecttest#testJustToKnow com.mypkg.myapp.test/android.test.InstrumentationTestRunner客户端不是 准备就绪。测试运行已开始

junit.framework.AssertionFailedError:在中未找到任何测试 com.mypkg.myapp.utils.mycoloobjecttest位于 android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191)位于 android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176)位于 onStart(InstrumentationTestRunner.java:555) 在 android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1959)

测试一直进行到完成


也许这会有用:

  • src/test:仅用于单元测试(不涉及android框架)

  • src/androidTest:用于android仪器测试

请看一个更好的解释

(请检查您的注释,例如
@RunWith(AndroidJUnit4.class)
@SmallTest
@Test

我希望这对你有用

(更新)

可能您在gradle(主模块)中忘记了这一点:


如果您正在使用浓缩咖啡,则必须添加一个依赖项(请检查此“…仪器测试示例…”上方的链接)

我刚刚遇到了相同的问题。我是这样解决的:

  • 在Android Studio中,转到运行>编辑配置
  • 在标题下,选择您的测试并删除它(减号按钮)
  • 添加新的测试配置(加号按钮)并选择Android Instrumented Tests
  • 设置以下选项:
  • 模块:应用程序
  • 测试:课堂
  • 类:在此处选择或输入具有检测测试的类
  • 单击“确定”

现在一切都应该正常了。

你能发布测试类吗?在我的例子中,有一个“步骤0”,我必须关闭并重新打开项目。在第2步中,配置处于“未知”状态。@murf此配置有效。奇怪的是为什么工作室没有自动完成所有这些。。。不幸的是,这些问题很糟糕。。。感谢murf指出,
@RunWith(AndroidJUnit4.class)
不是必需的
android {
    defaultConfig {
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
}