Android Studio 单元测试配置
Posted
技术标签:
【中文标题】Android Studio 单元测试配置【英文标题】:Android Studio Unit Testing Configuration 【发布时间】:2016-07-20 15:30:33 【问题描述】:有没有办法从命令行运行 android 单元测试或配置?目前,“gradle test”运行单元测试测试工件中的所有测试,但这些测试失败并出现错误:“java.lang.IllegalStateException: 未注册仪器!必须在注册仪器下运行。”
我正在寻找一种方法来运行在 Android Studio 中右键单击 com.foo.android(test) 并按“在 'com.foo.android' 中运行测试”时运行的相同配置?我希望将其移至詹金斯。或者可以使用我在 AS 中手动创建的配置。
谢谢
[编辑] 如果我将纯 junit 单元测试和 Instrumentation 测试分离到它们各自的工件中,那么我将失去自己运行 UI 测试的能力,有没有办法解决这个问题?我有一个配置只运行 UITest 包,但不知道如何从命令行运行这个配置。
【问题讨论】:
您是否有仪器化测试(例如 Espresso 测试),或者只是纯 Java junit 测试? 两者混合,它们也不是全部分离出来的,有些在同一个类中 你是否在 build.gradle 中配置了testInstrumentationRunner
?
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 是目前的设置方式
【参考方案1】:
看看这些是否有助于从命令行运行 android 单元测试:
adb shell am instrument -w <package>/android.test.InstrumentationTestRunner
运行子包中的所有测试用例:
adb shell am instrument -w <package>.<sub package>/android.test.InstrumentationTestRunner
从测试类运行单个测试用例:
adb shell am instrument -w -e class <project>.<test class>#testCase
<package>/android.test.InstrumentationTestRunner
【讨论】:
这适用于包,但是有没有办法运行配置,而不是单独指定每个包?如果没有,我可能只为 unitTests、InstrumentationTests 和 UITests 创建一个包。【参考方案2】:我发现最好的方法是将我的所有 UITests 放在一个包中,当我只想运行单元测试时运行:
adb shell am instrument -w -e notPackage com.foo.android.UITest com.foo.android.test/android.support.test.runner.AndroidJUnitRunner
运行所有测试运行:
adb shell am instrument -w com.foo.android.test/android.support.test.runner.AndroidJUnitRunner
仅适用于 UITest:
adb shell am instrument -w -e package com.foo.android.UITest com.foo.android.test/android.support.test.runner.AndroidJUnitRunner
【讨论】:
以上是关于Android Studio 单元测试配置的主要内容,如果未能解决你的问题,请参考以下文章
在Android Studio进行“简单配置”单元测试(Android Junit)