Loc*_*ike 17 testing android gradle android-studio
我是gradle和Android Studio的新手,我正在试图弄清楚如何运行测试.我按照http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Testing中的说明操作,我可以运行仪器测试,但只能执行/gradlew connectedInstrumentTest
.我在理解其他check
任务时遇到了麻烦,这些任务不会在我的应用程序中执行任何代码.这是什么./gradlew tasks prints
...
Verification tasks
------------------
check - Runs all checks.
connectedCheck - Runs all device checks on currently connected devices.
connectedInstrumentTest - Installs and runs the tests for Build 'Debug' on connected devices.
deviceCheck - Runs all device checks using Device Providers and Test Servers.
...
Run Code Online (Sandbox Code Playgroud)
如果check
运行所有检查...不应该运行我得到的那些connectedInstrumentTest
?
另外,如何运行不需要Android环境的测试?我应该将它们放在/ test/java下吗?如果是这样,我应该运行什么命令来执行它们?
很抱歉,如果这些问题看起来非常明显,但我在文档中找不到这些问题的任何答案.
谢谢!
编辑:
所以我在这里取得了一些进展.它似乎check
没有做任何事情.(现在)开发人员可以添加相关任务check
来运行一些JUnit测试.您将需要创建一个任务,让它找到源,编译它们并运行它们.
connectedCheck
和connectedInstrumentTest
:在设备中运行instrumentationTest.(这总是奏效).
deviceCheck
:正如文档所说,这对于Continuos集成测试很有用.
如果check运行所有检查...不应该运行我从connectedInstrumentTest获得的那些?您必须运行connectedInstrumentTest任务作为依赖项来检查任务.
check.dependsOn connectedInstrumentTest
如何运行不需要Android环境的测试?
对于android项目,我们可以讨论3种类型的测试
Junit测试
我们不能使用简单的junit测试来检查android相关的类.我们可以做的是将核心java类分离到java库项目,并将该依赖项添加到android项目中.
我们可以使用robolectric测试在仿真器外部运行单元测试.这使得测试快速且易于使用CI服务器进行配置.
要运行robolectric测试我们使用gradle-android-test-plugin 它清楚地描述了如何使用该插件.
项目结构
我们必须使用默认文件夹结构才能使用此插件.我们必须使用名为'test'的文件夹来保存robolectric测试:
MyProject/
| settings.gradle
| build.gradle
- app/
| build.gradle
-main
-java
-com.example.calculator
-test
-java
-com.example.calculator.robolectrictests
Run Code Online (Sandbox Code Playgroud)
构建文件是
buildscript {
repositories {
mavenCentral()
maven {
url 'https://oss.sonatype.org/content/repositories/snapshots/'
}
}
}
dependencies {
classpath 'com.android.tools.build:gradle:0.6.+'
classpath 'com.squareup.gradle:gradle-android-test-plugin:0.9.1-SNAPSHOT'
}
apply plugin: 'android'
apply plugin: 'android-test'
repositories {
mavenCentral()
}
android {
compileSdkVersion 19
buildToolsVersion "19.0.0"
defaultConfig {
minSdkVersion 8
targetSdkVersion 19
}
}
dependencies {
compile 'com.android.support:appcompat-v7:+'
testCompile 'junit:junit:4.10'
testCompile 'org.robolectric:robolectric:2.1.+'
testCompile 'com.squareup:fest-android:1.0.+'
}
Run Code Online (Sandbox Code Playgroud)
此测试任务将自动执行检查任务.
仪器测试
如你所述,这需要使用android模拟器.这使得测试变慢,这意味着它们不是做TDD的好方法.
我们可以使用robolectric测试作为TDD过程中的单元测试.仪器测试我们可以在TDD中作为综合测试使用.
检查应该运行仪器测试 IIRC。关于运行非 Android 测试。目前 android-gradle 插件不支持它。不过,我制作了一个插件来使用 robolectric 运行 JUnit 测试,因此您不需要仪器测试。这是链接:android-unit-test
归档时间: |
|
查看次数: |
8361 次 |
最近记录: |