在使用android gradle插件读取android guide on testing之后,我想为我的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
答案 0 :(得分:0)
我建议您使用robolectric
,声明如下:
classpath 'org.robolectric:robolectric-gradle-plugin:0.11.+'
然后应用插件:
apply plugin: 'robolectric'