Old*_*eer 1 java groovy spock spring-boot
我的堆栈:
我们想开始在Spock测试框架中编写测试。我遵循了此方法,但是没有成功。当我尝试运行所有测试时,我的Spock测试未运行。
我能够进行一项测试。我可以在测试上“右键单击”并运行它。但是,如果我尝试运行整个groovy软件包(或Java软件包下的某些软件包),它将不会运行那些groovy测试。它不会运行意味着出现以下错误:
Jul 24, 2019 8:33:47 AM org.junit.platform.launcher.core.DefaultLauncher handleThrowable
WARNING: TestEngine with ID 'junit-jupiter' failed to discover tests
java.lang.NoClassDefFoundError: org/junit/platform/engine/support/discovery/SelectorResolver
at org.junit.jupiter.engine.JupiterTestEngine.discover(JupiterTestEngine.java:69)
at org.junit.platform.launcher.core.DefaultLauncher.discoverEngineRoot(DefaultLauncher.java:168)
at org.junit.platform.launcher.core.DefaultLauncher.discoverRoot(DefaultLauncher.java:155)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:69)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: java.lang.ClassNotFoundException: org.junit.platform.engine.support.discovery.SelectorResolver
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 8 more
Jul 24, 2019 8:33:47 AM org.junit.platform.launcher.core.DefaultLauncher handleThrowable
WARNING: TestEngine with ID 'junit-vintage' failed to discover tests
java.lang.NoClassDefFoundError: org/junit/platform/engine/support/discovery/SelectorResolver
at org.junit.vintage.engine.VintageTestEngine.discover(VintageTestEngine.java:62)
at org.junit.platform.launcher.core.DefaultLauncher.discoverEngineRoot(DefaultLauncher.java:168)
at org.junit.platform.launcher.core.DefaultLauncher.discoverRoot(DefaultLauncher.java:155)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:69)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: java.lang.ClassNotFoundException: org.junit.platform.engine.support.discovery.SelectorResolver
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 8 more
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么可能吗?
Spock测试:
class TelephoneTest extends Specification {
def "Should copy correct values from telephone buidler."() {
given:
TelephoneInfoType telephone = telephone().build().toOurType()
expect:
telephone.getCountry() == COUNTRY
telephone.getNumber() == NUMBER
telephone.getType() == TYPE
telephone.getLocation() == LOCATION
}
}
Run Code Online (Sandbox Code Playgroud)
我的文件夹结构:
src/main/java
src/test/groovy
src/test/java
Run Code Online (Sandbox Code Playgroud)
我希望看到测试正在运行,这意味着:我可以右键单击文件夹src/test/groovy,选择运行测试。
这是我在IDEA中看到的:
因此,也许您想更具体一点并在GitHub上共享一个MCVE,即一个完整的Maven项目,其中包含一些虚拟类和测试(Spock和JUnit),供我检查。
更新:在检查并修复您的MCVE后,我可以解释出什么问题了:
用于Spock测试的MCVE文件夹为“ src / test / spock”。我将其重命名为“ src / test / groovy”,以使GMavenPlus能够找到它。这修复了Groovy测试编译。
在您的POM中,您手动覆盖了三个JUnit Jupiter工件的依赖版本,但mvn help:effective-pom向我展示了在版本5.5.1时,其他一些仍在5.3.2上。我不知道为什么您除了需要不断更新并始终使用最新版本之外,还需要更新它们。无论如何,有效的POM还会显示您的父POM中存在以下与JUnit相关的版本属性:
<junit-jupiter.version>5.3.2</junit-jupiter.version>
<junit.version>4.12</junit.version>
Run Code Online (Sandbox Code Playgroud)
更确切地说,这些属性是从父POM的自己的父POM。其余的操作很简单:只需在您自己的POM中覆盖相关属性即可:
<properties>
<junit-jupiter.version>5.5.1</junit-jupiter.version>
</properties>
Run Code Online (Sandbox Code Playgroud)
现在运行mvn clean test,看看JUnit和Spock测试都正在编译和运行。像上面的屏幕快照一样,从IntelliJ IDEA运行测试现在也可以进行。
我还通过GitHub 向您发送了请求请求。
| 归档时间: |
|
| 查看次数: |
599 次 |
| 最近记录: |