如何使用 eclipse 和 gradle 运行 Spock 测试 Java 项目?
How to run Spock tests for Java project with eclipse and gradle?
我在执行此测试时遇到了问题。我遵循了本教程:https://kousenit.org/2011/01/26/an-easier-way-to-add-spock-to-an-eclipsests-project/ 以配置我的项目。但是当我 运行 我得到以下异常:
Class not found spock.tests.CustomerReaderSpec
java.lang.ClassNotFoundException: spock.tests.CustomerReaderSpec at
java.net.URLClassLoader.findClass(URLClassLoader.java:381) at
java.lang.ClassLoader.loadClass(ClassLoader.java:424) at
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) at
java.lang.ClassLoader.loadClass(ClassLoader.java:357)
不知道为什么,因为class在下面的文件夹下,大家可以看到:
这是我的 build.gradle:
apply plugin: 'groovy'
apply plugin: 'eclipse'
repositories {
jcenter()
mavenCentral()
}
dependencies {
compile 'org.codehaus.groovy:groovy-all:2.0.5'
implementation 'com.google.guava:guava:23.0'
compile group: 'org.springframework.data', name: 'spring-data-jpa', version: '2.0.2.RELEASE'
compile group: 'org.hibernate.javax.persistence', name: 'hibernate-jpa-2.0-api', version: '1.0.1.Final'
testCompile(
'junit:junit:4.12',
'org.codehaus.groovy:groovy-all:2.4.11',
'org.spockframework:spock-core:1.1-groovy-2.4',
'org.spockframework:spock-spring:1.0-groovy-2.3'
)
}
task runScript (dependsOn: 'classes', type: JavaExec) {
main = 'myscript'
classpath = sourceSets.main.runtimeClasspath
}
test {
useJUnit {
includeCategories 'spock.tests.UnitTest'
}
testLogging {
showStandardStreams = true
}
}
这有什么问题吗?
编辑:
关于工具。
我正在使用:
Spring Tool Suite
Version: 3.9.2.RELEASE
Platform: Eclipse Oxygen.2 (4.7.2)
Plugin for groovy:
Eclipse Groovy Development Tools
Version: 2.9.2.xx-201712201854-e47
Plugin for gradle:
Eclipse buildship
Version: 2.1.2.v20170807-1324
您可以从这里克隆项目:
https://github.com/AndyBraveMX/spock-taste
我在您的示例项目中看到的 2 个问题:
1) 顶部缺少 CustomerReaderSpec "package spock.tests"
2) testCompile
中需要依赖项 "org.springframework:spring-test:5.0.2.RELEASE"
此外,请确保您为工作区选择的 Groovy 编译器(Window > 首选项 > Groovy > 编译器)匹配 - 至少主要和次要 - groovy 的版本-您正在使用的所有依赖项。
通过这些更改,我能够 运行 spock 测试。
我在执行此测试时遇到了问题。我遵循了本教程:https://kousenit.org/2011/01/26/an-easier-way-to-add-spock-to-an-eclipsests-project/ 以配置我的项目。但是当我 运行 我得到以下异常:
Class not found spock.tests.CustomerReaderSpec java.lang.ClassNotFoundException: spock.tests.CustomerReaderSpec at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
不知道为什么,因为class在下面的文件夹下,大家可以看到:
这是我的 build.gradle:
apply plugin: 'groovy'
apply plugin: 'eclipse'
repositories {
jcenter()
mavenCentral()
}
dependencies {
compile 'org.codehaus.groovy:groovy-all:2.0.5'
implementation 'com.google.guava:guava:23.0'
compile group: 'org.springframework.data', name: 'spring-data-jpa', version: '2.0.2.RELEASE'
compile group: 'org.hibernate.javax.persistence', name: 'hibernate-jpa-2.0-api', version: '1.0.1.Final'
testCompile(
'junit:junit:4.12',
'org.codehaus.groovy:groovy-all:2.4.11',
'org.spockframework:spock-core:1.1-groovy-2.4',
'org.spockframework:spock-spring:1.0-groovy-2.3'
)
}
task runScript (dependsOn: 'classes', type: JavaExec) {
main = 'myscript'
classpath = sourceSets.main.runtimeClasspath
}
test {
useJUnit {
includeCategories 'spock.tests.UnitTest'
}
testLogging {
showStandardStreams = true
}
}
这有什么问题吗?
编辑:
关于工具。
我正在使用:
Spring Tool Suite
Version: 3.9.2.RELEASE
Platform: Eclipse Oxygen.2 (4.7.2)
Plugin for groovy:
Eclipse Groovy Development Tools
Version: 2.9.2.xx-201712201854-e47
Plugin for gradle:
Eclipse buildship
Version: 2.1.2.v20170807-1324
您可以从这里克隆项目: https://github.com/AndyBraveMX/spock-taste
我在您的示例项目中看到的 2 个问题:
1) 顶部缺少 CustomerReaderSpec "package spock.tests"
2) testCompile
中需要依赖项 "org.springframework:spring-test:5.0.2.RELEASE"此外,请确保您为工作区选择的 Groovy 编译器(Window > 首选项 > Groovy > 编译器)匹配 - 至少主要和次要 - groovy 的版本-您正在使用的所有依赖项。
通过这些更改,我能够 运行 spock 测试。