Spring boot 从jar运行Spock Spring启动测试
我正在尝试用gradle构建一个jar,它允许我运行springboot的Spock测试。我已经为此挣扎了两天,没有任何效果。这就是我目前拥有的: 我的主类放入Spring boot 从jar运行Spock Spring启动测试,spring-boot,groovy,jar,spock,Spring Boot,Groovy,Jar,Spock,我正在尝试用gradle构建一个jar,它允许我运行springboot的Spock测试。我已经为此挣扎了两天,没有任何效果。这就是我目前拥有的: 我的主类放入test/groovy/main.groovy: class Main { static void main(String[] args) { def embeddedSpecRunner = new EmbeddedSpecRunner() embeddedSpecRunner.runClass(
test/groovy/main.groovy
:
class Main {
static void main(String[] args) {
def embeddedSpecRunner = new EmbeddedSpecRunner()
embeddedSpecRunner.runClass(SampleScenario)
}
}
@SpringBootTest(classes = SpringBootGroovyApplication.class)
class MyScenario extends Specification {
def "test"() {
when:
def result = 1 + 1
then:
result == 2
}
}
test/groovy/SampleScenario.groovy
:
class Main {
static void main(String[] args) {
def embeddedSpecRunner = new EmbeddedSpecRunner()
embeddedSpecRunner.runClass(SampleScenario)
}
}
@SpringBootTest(classes = SpringBootGroovyApplication.class)
class MyScenario extends Specification {
def "test"() {
when:
def result = 1 + 1
then:
result == 2
}
}
src/main/groovy/springbootgroovyaapplication
:
@SpringBootApplication
class SpringBootGroovyApplication {
static void main(String[] args) {
SpringApplication.run SpringBootGroovyApplication, args
}
}
build.gradle
:
plugins {
id 'org.springframework.boot' version '2.3.5.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
id 'java'
id 'groovy'
}
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
implementation 'org.springframework.boot:spring-boot-configuration-processor'
compile group: 'org.spockframework', name: 'spock-core', version: '1.3-groovy-2.5'
compile group: 'org.spockframework', name: 'spock-spring', version: '1.3-groovy-2.5'
testCompile group: 'com.athaydes', name: 'spock-reports', version: '1.7.1'
}
bootJar {
mainClassName = 'Main'
from sourceSets.test.output.classesDirs
}
然后我运行/gradlew bootJar
,以构建jar。然后我运行我的jar并得到异常:
Exception in thread "main" java.lang.NoClassDefFoundError: groovy/lang/GroovyObject
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:800)
at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:698)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:621)
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:579)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:576)
at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:151)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:398)
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:46)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:107)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88)
Caused by: java.lang.ClassNotFoundException: groovy.lang.GroovyObject
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 17 more
我不知道出了什么问题-我解压缩了jar,groovy依赖项就在那里。。。提前感谢您的帮助