[Error] JUnit 테스트에서 "No tests found matching" 에러 해결 방법

개발자 P군·2024년 10월 7일
0
post-custom-banner

최근에 업무에서 JUnit으로 테스트를 진행하던 중, 갑자기 아래와 같은 에러 메시지가 발생했습니다.

java.lang.Exception: No tests found matching

확인해보니 해당 에러는 JUnit이 테스트 메소드를 찾지 못할 때 발생하는 에러였습니다.

  • 문제 코드
	@Test
	public static List<Map<String, Object>> convertKeysToEnglish(List<Map<String, Object>> originalList) {
    	//코드
        return rankedList;
    }
  • 문제원인
  1. JUnit 테스트 메소드는 void 반환 타입을 가져야 한다.
    JUnit은 테스트 메소드가 결과 값을 반환하지 않고, 메소드 내에서 검증(assert)을 수행하는 구조를 기대합니다. 그러나 위 코드에서는 반환 타입이 List로 되어 있어 테스트 메소드로 적합하지 않았습니다.

  2. static 메소드에 대한 테스트는 JUnit에서 문제를 일으킬 수 있다.
    JUnit은 기본적으로 인스턴스 메소드를 테스트합니다. static 메소드는 클래스에 종속되기 때문에 JUnit에서 제대로 인식하지 못해 에러가 발생할 수 있습니다.

  • 해결방법
	public List<Map<String, Object>> convertKeysToEnglish(List<Map<String, Object>> originalList) {
    	//코드
        return rankedList;
    }
  1. @Test 어노테이션 제거: 테스트 메소드가 아닌 일반 메소드에서는 @Test 어노테이션이 필요하지 않습니다.
  2. static 제거: static 키워드를 제거하여 일반 인스턴스 메소드로 변경하였습니다.
  • 결론
  1. JUnit 테스트를 작성할 때는 메소드가 void 타입이어야 하며, 불필요한 @Test 어노테이션이 없는지 꼭 확인해야 한다.
  2. static 메소드의 경우 특별한 상황을 제외하고는 테스트 메소드로 사용하지 않는 것이 좋다.
profile
꾸준한 발전을 지향하는 개발자
post-custom-banner

0개의 댓글