我在用:
> Android Studio 2.1.3
> Gradle 2.14.1(我也试过2.14)
> OpenJDK版“1.8.0_91”
我想用Groovy和Spock为Android应用程序示例编写一些单元测试.
当我尝试运行简单测试时:
package a.b.regex
class TestSum extends spock.lang.Specification {
def "test adding some numbers"() {
when:
def a = 5 + 4
then:
a == 9
}
}
当我尝试在Android Studio中运行此测试时出现错误:
Process finished with exit code 1
Class not found: "a.b.regex.TestSum"Empty test suite.
我使用的配置:
1)
buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:2.1.3'
classpath 'org.codehaus.groovy:gradle-groovy-android-plugin:0.3.6'
}
}
apply plugin: 'groovyx.grooid.groovy-android'
// ...
dependencies {
testCompile 'org.robospock:robospock:1.0.0'
}
2)
buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:2.1.3'
classpath 'org.codehaus.groovy:groovy-android-gradle-plugin:1.0.0'
}
}
apply plugin: 'groovyx.android'
dependencies {
testCompile "org.codehaus.groovy:groovy-all:2.4.1"
testCompile "org.spockframework:spock-core:1.0-groovy-2.4"
testCompile 'org.codehaus.groovy:groovy:2.4.6:grooid'
}
从控制台完全不运行任何测试.
通过测试Java应用程序,我没有问题.
这是我想要使用Spock的项目代码:GitHub repository
值得庆幸的是Pieces我找到了答案.
您应该使用以下配置:
apply plugin: 'groovyx.android'
buildscript {
repositories {
jcenter() // or mavenCentral,etc.
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.3'
classpath 'org.codehaus.groovy:groovy-android-gradle-plugin:1.0.0'
}
}
testCompile 'org.codehaus.groovy:groovy:2.4.7:grooid'
testCompile('org.spockframework:spock-core:1.0-groovy-2.4') {
exclude group: 'org.codehaus.groovy'
exclude group: 'junit'
}
最佳答案
1)
除了使用groovy android插件的过时版本之外,这应该很有用.当前版本是1.0.0.您看到的错误是您将测试包含在androidTest源文件夹中,当它们应包含在测试源文件夹中时.
除了使用groovy android插件的过时版本之外,这应该很有用.当前版本是1.0.0.您看到的错误是您将测试包含在androidTest源文件夹中,当它们应包含在测试源文件夹中时.
2)
你不希望groovy-all,并希望将它从spock传递依赖项中排除.
这看起来很像
dependencies {
testCompile 'org.codehaus.groovy:groovy:2.4.7:grooid'
testCompile('org.spockframework:spock-core:1.0-groovy-2.4') {
exclude group: 'org.codehaus.groovy'
exclude group: 'junit'
}
}