java – 使用Spock框架运行Android单元测试

前端之家收集整理的这篇文章主要介绍了java – 使用Spock框架运行Android单元测试前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我在用:

> Android Studio 2.1.3
> Gradle 2.14.1(我也试过2.14)
> OpenJDK版“1.8.0_91”

我想用GroovySpock为Android应用程序示例编写一些单元测试.

我已经读过关于RoboSpock内容了.

当我尝试运行简单测试时:

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源文件夹中,当它们应包含在测试源文件夹中时.

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'
    }
  }

与#1的问题相同,您可能在androidTest文件夹下有源而不是测试文件夹.

androidTest文件夹用于在设备上运行的测试,以及测试文件夹用于将在您的机器JVM上运行的测试.

猜你在找的Android相关文章