在android studio

时间:2016-11-04 18:18:18

标签: android unit-testing android-studio android-instrumentation

所以我开始使用名为MyCoolObjectTest的UnitTest。需要进行一些检测测试,我通过拖动将类在Android项目视图中从test目录移动到androidTest目录。我的UnitTest曾经很好地工作;除了仪表部分。但现在它根本不起作用。我一直在

Class not found: "com.mypkg.MyCoolObjectTest"Empty test suite.

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

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

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

对于某些见解,我想在我的测试中使用一些安卓库,例如

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();
    }
}

更新

这是我得到的不同痕迹。如果我单击该方法而不是类,我会得到以下跟踪:

刚才我点击了方法而不是全班,并获得了以下跟踪:

  

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 class   com.mypkg.myapp.utils.MyCoolObjectTest#testJustToKnow   com.mypkg.myapp.test / android.test.InstrumentationTestRunner客户端没有   准备好了......试运行开始了

     

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

     

测试已完成。

2 个答案:

答案 0 :(得分:4)

我遇到了同样的问题。以下是我解决它的方法:

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

现在一切都应该有效。

答案 1 :(得分:0)

也许这会有用:

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

  • src / androidTest :用于Android检测测试。

请参阅here更好的解释。

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

我希望这对你有用。

<强>(更新)

也许你在你的平板上忘记了这个(在主模块中):

android {
    defaultConfig {
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
}

如果您使用Espresso,则必须添加依赖项(请检查上面的链接“......仪器测试示例...”)