繁体   English   中英

如何为Android / Gradle设置单元测试

[英]How to set up unit tests for Android / Gradle

在阅读了使用android gradle插件进行测试android指南之后,我想为我的POJO设置JUnit测试,这些测试不使用经过测试的测试。 我们的想法是,不依赖于Android的代码测试应该非常快(并且有助于TDD)。

是否有一种标准方法可以在build.gradle中设置源集和任务来实现此目的? 这是主要问题,第二个问题是我在下面的尝试有什么问题......

我正在使用Android Studio 0.4.2和Gradle 1.9,在一个新的“test”文件夹中试验一个简单的JUnit测试类。 这是我到目前为止所做的,但当我运行“gradle testPojo”时,我得到了这个结果:

:android:assemble UP-TO-DATE
:android:compileUnitTestJava UP-TO-DATE
:android:processUnitTestResources UP-TO-DATE
:android:unitTestClasses UP-TO-DATE
:android:testPojo FAILED

* What went wrong:
Execution failed for task ':android:testPojo'.
> failed to read class file 
/path/to/project/android-app/build/classes/unitTest/TestClass.class

我确认该类实际上在那里,所以我很困惑为什么该任务无法读取该文件。

这是build.gradle文件:

...

sourceSets {
  unitTest {
    java.srcDir file('src/test/java')
    resources.srcDir file('src/test/resources')
  }
}

dependencies {
  ...
  unitTestCompile 'junit:junit:4.11'
}

configurations {
  unitTestCompile.extendsFrom instrumentTestCompile
  unitTestRuntime.extendsFrom instrumentTestRuntime
}

task testPojo(type: Test, dependsOn: assemble){
  description = "Run pojo unit tests (located in src/test/java...)."
  testClassesDir = sourceSets.unitTest.output.classesDir

  android.sourceSets.main.java.srcDirs.each { dir ->
    def buildDir = dir.getAbsolutePath().split('/')
    buildDir =  (buildDir[0..(buildDir.length - 4)] + ['build', 'classes', 'debug']).join('/')
    sourceSets.unitTest.compileClasspath += files(buildDir)
    sourceSets.unitTest.runtimeClasspath += files(buildDir)
  }
  classpath = sourceSets.unitTest.runtimeClasspath
}

check.dependsOn testPojo

我建议你使用robolectric ,声明如下:

classpath 'org.robolectric:robolectric-gradle-plugin:0.11.+'

然后应用插件:

apply plugin: 'robolectric'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM