在android studio中将UnitTest转换为Instrumentation Test
所以我从一个名为MyColoObjectTest的单元测试开始。需要进行一些插装测试,我通过拖动将在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和官方文件的解决方案。到目前为止运气不好。有没有人经历过类似的事情 (如果我将其拖回测
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"
}
}