[java] Gradle로 JUnit 테스트를 실행하는 방법은 무엇입니까?

현재 다음 build.gradle 파일이 있습니다.

apply plugin: 'java'

sourceSets {
    main {
        java {
            srcDir 'src/model'
        }
    }
}

dependencies {
    compile files('libs/mnist-tools.jar', 'libs/gson-2.2.4.jar')
    runtime fileTree(dir: 'libs', include: '*.jar')
}    

build.gradle 파일은 여기 내 저장 소용 입니다. 내 모든 주요 파일은 src / model /에 있고 해당 테스트는 test / model에 있습니다.

JUnit 4 종속성을 올바르게 추가 한 다음 테스트 / 모델 폴더에서 해당 테스트를 실행하려면 어떻게해야 합니까?



답변

junit 4 종속성을 올바르게 추가하려면 어떻게해야합니까?

표준 Maven (또는 이와 동등한) 저장소에 대해 해결한다고 가정합니다.

dependencies {
    ...
    testCompile "junit:junit:4.11"  // Or whatever version
}

테스트 / 모델 폴더에서 테스트를 실행 하시겠습니까?

동일한 방식으로 테스트 소스 세트를 정의합니다.

sourceSets {
    ...

    test {
        java {
            srcDirs = ["test/model"]  // Note @Peter's comment below
        }
    }
}

그런 다음 다음과 같이 테스트를 호출합니다.

./gradlew test

편집 : JUnit 5를 대신 사용하는 경우 완료해야 할 단계가 더 많으므로이 자습서를 따라야 합니다 .


답변

기본 gradle 패키지 구조로 프로젝트를 설정하는 경우, 즉 :

src/main/java
src/main/resources
src/test/java
src/test/resources

그러면 테스트를 실행하기 위해 sourceSets를 수정할 필요가 없습니다. Gradle은 테스트 클래스와 리소스가 src / test에 있음을 알아냅니다. 그런 다음 Oliver가 위에서 말한대로 실행할 수 있습니다. 참고할 사항 : 속성 파일을 설정하고 gradle과 IDE를 모두 사용하여 테스트 클래스를 실행할 때주의하십시오. 나는 Eclipse를 사용하고 JUnit을 실행할 때 Eclipse는 하나의 클래스 경로 (bin 디렉토리)를 선택하는 반면 gradle은 다른 클래스 경로 (빌드 디렉토리)를 선택합니다. 리소스 파일을 편집하고 테스트 런타임에 변경 사항이 반영되지 않으면 혼동이 발생할 수 있습니다.


답변

Spring Initializr로 프로젝트를 생성했다면 , 모든 것이 올바르게 구성되어야하고 실행해야하는 모든 것이 실행됩니다.

./gradlew clean test --info
  • --info테스트 출력을 보지 않으려면 드롭 하십시오.
  • 하락 clean마지막 변경 이후 이미 통과 한 테스트를 다시 실행하지 않으려면 하십시오.

에 필요한 종속성 build.gradleSpring Boot에서 테스트하는 …

dependencies {
    compile('org.springframework.boot:spring-boot-starter')
    testCompile('org.springframework.boot:spring-boot-starter-test')
}

어떤 이유로 테스트 실행기는이를 알려주지 않지만 build/reports/tests/test/index.html.


답변

testCompile 은 더 이상 사용되지 않습니다. Gradle 7 호환 :

dependencies {
...
   testImplementation 'junit:junit:4.13'
}

기본 폴더 구조 (src / test / java / …)를 사용하는 경우 테스트 섹션은 간단합니다.

test {
    useJUnit()
}

드디어:

gradlew clean test

Alos 참조 : https://docs.gradle.org/current/userguide/java_testing.html


답변