org.junit.platform.commons.JUnitException: TestEngine with ID junit-vintage failed to discover tests
서론
기존에 jar파일을 추가해서 Junit4로 테스트하던 프로젝트를 마찬가지로 jar파일을 Junit5로 버전 업해서 사용하고 있었는데
‘굳이 이럴 필요없이 maven 프로젝트로 변경하면 되지 않나?’라는 생각에 maven 프로젝트로 변경 후 발생했던 에러를 해결한 방법을 작성해둔다…
상황
위에서 적은 것 처럼 기존에 Junit jar를 다운받아서 직접 경로를 지정하는 방식으로 junit4, 5를 둘 다 사용하고 있었는데 프로젝트를 maven으로 변경 후 의존성 충돌이 발생해 아래와 같은 에러가 발생하며 테스트가 진행되지 않았다.
발생한 에러
1 | Internal Error occurred. |
위 에러 로그처럼 ‘junit-vintage’를 아이디로 하는 테스트 엔진을 찾지 못했다는 에러가 발생해서 junit-vintage 의존성을 추가해주었는데..
그 후 삽질
1 | <!-- https://mvnrepository.com/artifact/org.junit.vintage/junit-vintage-engine --> |
추가 해줘도 똑같은 에러만 반복 할 뿐이었다.
그래서 공식 문서를 살펴보니..
JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage
라고 떡하니 써 적혀있어서 위에 3 개의 의존성을 모두 추가한 후 리빌드 후 다시 테스트를 실행해봤다.
1 | <!-- Only needed to run tests in a version of IntelliJ IDEA that bundles older versions --> |
하지만 결과는 마찬가지였고… .m2폴더에서 Junit 의존성을 다 삭제하고, Intellij project setting에서 Modules, Libraies에서 모두 삭제하고 이것저것 다 해봤지만 모두 실패로 돌아가서 결국 새 maven 프로젝트를 만들어서 하나씩 비교해보기로 했다.
해결
그 결과… .iml 파일에 아래 처럼 의존성들이 남아있는 것을 확인했고…
1 | <orderEntry type="module-library" scope="TEST"> |
모든 의존성을 삭제 후 다시 Junit5만 의존성 추가하여 테스트를 실행하니…
드디어 성공적인 테스트를 완료 할 수 있었다.
여담
project setting에서 분명 모듈 관련된 설정을 모두 삭제 했는데 왜 .iml파일에 설정이 삭제되지 않고 남아있는진 모르겠지만, 필자와 같은 상황이 발생하는 다른 사람들에게 도움이 되길 바라며 글을 마무리한다.