내 스택 :
- IDEA 2019년 1월 3일
- Springboot의 2.1.6
- 자바 (11)
- 메이븐 3.8.0
- 그루비 2.5
- 스팍 1.3
- JUnit을 목성 5.5.1
- 의 JUnit 빈티지 5.5.1
- GMavenPlus 플러그인 2.7.1
우리는 스팍 테스트 프레임 워크에서 테스트를 쓰기 시작하고 싶습니다. 나는 다음 이 하우투를 ,하지만 난 실패했습니다. 내 모든 테스트를 실행하려고하면 내 스팍 테스트가 실행되고 있지 않습니다.
나는 하나 개의 테스트를 실행할 수입니다. 나는 시험에서 "마우스 오른쪽 버튼으로 클릭"을 실행할 수 있습니다. 나는 전체 끝내 패키지 (또는 Java 패키지에서 일부 패키지)를 실행하려고하면 그러나 그 그루비 테스트를 실행하지 않습니다. 이 오류 다음과 같은 방법을 실행되지 않습니다 :
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
그것이 가능한 이유 누군가가 설명 할 수 있습니까?
스팍 시험 :
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
}
}
내 폴더 구조 :
src/main/java
src/test/groovy
src/test/java
내가 테스트하는 방법을 실행하는보고 싶다 : 나는 폴더를 마우스 오른쪽 단추로 클릭 src/test/groovy
선별 실행 테스트합니다.
이것은 내가 IDEA에서 볼 것입니다 :
그래서 어쩌면 당신은 더 구체적를 얻고 공유 할 MCVE을 , 즉 몇 가지 더미 클래스와 테스트 (모두 스팍과의 JUnit)와 전체 Maven 프로젝트, GitHub의 날은 검사를 위해.
업데이트 : 검사와 당신의 MCVE를 해결 한 후 내 포크 내가 잘못 무엇인지 설명 할 수있다 :
스팍 테스트에 대한 귀하의 MCVE 폴더 'SRC / 테스트 / 스팍'입니다. 나는 순서로 'SRC / 테스트 / 그루비는'그것을 찾기 위해 GMavenPlus 수 있도록하기 위해 이름을 변경. 이 그루비 테스트 컴파일을 해결합니다.
당신의 POM에서 수동 세의 JUnit 목성 아티팩트에 대한 종속성 버전을 오버라이드하지만
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>
더 정확히, 그 속성은 출신 부모 POM 의 자신의 부모 POM . 그냥 자신의 POM에 관련된 속성을 재정의 : 나머지는 간단했다 :
<properties>
<junit-jupiter.version>5.5.1</junit-jupiter.version>
</properties>
이제 실행 mvn clean test
모두의 JUnit과 스팍 테스트를 컴파일하고 실행되고있는 것을 알 수있다. 또한 지금 작동 이상 내 스크린 샷에서와 같이하게 IntelliJ IDEA에서 테스트를 실행합니다.
나는 또한 당신에게 전송 된 풀 요구를 GitHub를 통해.