해결된 질문
작성
·
675
1
안녕하세요 저는 보통 전체 test를 진행할 때 test 디렉터리 우클릭 "Run test in project-name" 단축키 Ctrl + Shift + F10을 이용하는 편입니다.
이때 ./gradlew build와 우측 gradle을 하는것과 차이가 존재하나요?
이때 Settings에서 Run tests using은 Gradle이라고 가정하겠습니다.
답변 1
0
안녕하세요! j님!!! 매우 좋은 질문이십니다~~~ 😊
3가지 명령의 차이점을 모두 말씀드려볼게요!!!
1. test 디렉토티 우클릭 + Run test in project-name
2. ./gradlew build
3. 우측 gradle > verification > test
먼저 2번과 3번의 차이는 이렇습니다!! 3번을 사실 gradle 명령어로 바꾸어보면, ./gradlew test인데요!! build는 실제 빌드의 결과물로써 artifact가 나오는 것이고, test는 단순히 테스트만 돌리는 것이라 둘의 차이는 '결과물'이 나오냐 나오지 않냐로 인식해주시면 될 것 같습니다 ㅎㅎㅎㅎ (./gradlew build는 테스트도 돌리는 명령어라 build가 더 큰 범위입니다!!)
다음으로 1번과 3번을 살펴보면요, 사실상 차이가 없습니다!! 둘 모두 ./gradles test 라고 보아도 되거든요! 다만, 제가 3번 방법을 제일 선호하는 이유는 실제로 단일 모듈 프로젝트를 쓰는 경우는 거의 없고 대부분 멀티 모듈 프로젝트이기 때문입니다!
멀티 모듈 프로젝트에 대해서는 3번을 사용하시게 되면, 전체 모듈에 대한 모든 테스트가 돌아가게 되고, 1번을 사용하시면 지정된 특정 모듈에 있는 테스트만 돌아가게 되어요! 물론, 멀티 모듈을 사용하는 경우에도 프로젝트 단위에서 우클릭을 하면 전체 테스트를 돌릴 수 있습니다! 이 경우에는 돌리는 방식의 차이만 있다고 생각해주셔도 될 것 같습니다 ㅎㅎㅎㅎ
추가로, gradle 스크립트 설정을 통해 여러 테스트 환경을 구축하는 경우가 있을 수 있습니다!
task testV2(type: Test) {
group = 'verification'
useJUnitPlatform {
includeTags 'TEST_TAG'
}
}
예시로 Junit5에 있는 @Tag를 활용해서 특정 테스트들만을 돌릴 수 있는데요, 위 경우는 testV2라는 새로운 gradle task를 만들고 Junit5 테스트에 @Tag("TEST_TAG")가 붙어 있는 테스트들만 돌리도록 한 스크립트 입니다.
이런 경우에는 1번 방법인 우클릭을 사용 했을 때 profile을 지정해주는 것처럼 Edit Configuration을 해서 정확히 어떤 gradle task를 수행하는지 지정해주어야 하는 반면, 3번 방법을 사용하면 아예 gradle > verification > 다음에 test와 testV2가 나와서 특정 gradle task를 클릭만 하면 됩니다!
물론 추가적인 테스트 환경이 없다면 크게 상관없습니다 ㅎㅎㅎㅎ
결론적으로, 1번과 3번은 수행 방법의 차이가 있을 뿐 실질적인 차이가 없고요! 2번은 build로써 test를 포함해 artifact를 만드는 과정이라 1번, 3번에 비해 더 큰 범위라고 생각해주시면 될 것 같습니다~!!
좋은 질문 감사드립니다 ㅎㅎㅎ 🙏 언제라도 또 궁금하신 점 질문 남겨주세요!!!!!
소중하고 행복한 주말 되세요~!!! 감사합니다!! 🙇
멀티 모듈을 사용해보지 않았는데 그런 차이점이 존재하는군요 ㅎㅎ
추가적으로 @Tag 어노테이션까지 설명해주셔서 감사합니다!🙇