JUnit을 5 테스트와 스팍 테스트를 함께 실행되지 않습니다

올드 엔지니어 :

내 스택 :

  • 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선별 실행 테스트합니다.

kriegaex :

이것은 내가 IDEA에서 볼 것입니다 :

실행 그루비는 IDEA에서 테스트

그래서 어쩌면 당신은 더 구체적를 얻고 공유 할 MCVE을 , 즉 몇 가지 더미 클래스와 테스트 (모두 스팍과의 JUnit)와 전체 Maven 프로젝트, GitHub의 날은 검사를 위해.


업데이트 : 검사와 당신의 MCVE를 해결 한 후 내 포크 내가 잘못 무엇인지 설명 할 수있다 :

  1. 스팍 테스트에 대한 귀하의 MCVE 폴더 'SRC / 테스트 / 스팍'입니다. 나는 순서로 'SRC / 테스트 / 그루비는'그것을 찾기 위해 GMavenPlus 수 있도록하기 위해 이름을 변경. 이 그루비 테스트 컴파일을 해결합니다.

  2. 당신의 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를 통해.

추천

출처http://43.154.161.224:23101/article/api/json?id=316313&siteId=1