[Error] JUnit "No tests found matching" 에러

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

최근에 업무에서 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
꾸준한 발전을 지향하는 개발자입니다. 문제를 발견하고 해결하는 과정을 통해 얻은 새로운 지식을 공유하고자 합니다.

0개의 댓글

관련 채용 정보