2010-06-21 3 views
0

누군가 새로운 단위 테스트를 작성했지만 스위트에 추가하는 것을 잊어 버린 경우 나중에 누군가가 테스트를 중단하더라도 연속 빌드가 계속 행복하게 전달됩니다. 스위트에 포함되지 않은 JUnit 테스트를 찾는 방법이 있습니까?스위트에 포함되어 있지 않은 JUnit 3 테스트를 찾으십시오.

편집 내가 JUnit을 4로 이동할 수 있습니다 알고 있지만 그 다음 질문은, 어떻게이 @Test 주석을 누락 테스트를 찾을 수 있습니까하게
?

+0

@Test 주석이없는 테스트는 JUnit4의 테스트가 아닙니다. – topchef

+0

@grigory 물론, 꽤 일반적인 실수입니다. –

+0

JUnit 3에서는 어떤 테스트 스위트에도 속하지 않는 테스트 (테스트로 시작하여 TestCase의 하위 클래스에 속하는 메소드)를 찾는 방법에 대한 질문이 매우 중요하다는 것을 지적했습니다. JUnit 4를 사용하면 테스트가 아닌 테스트를 찾는 방법이 달라집니다. – topchef

답변

1

junit4로 이동 하시겠습니까?

+0

항상 가능한 것은 아닙니다. 몇 가지 테스트 프레임 워크가 있습니다. GWT 테스트는 TestCase에 의존합니다. –

+0

그리고 사람들은 여전히 ​​JDK 1.4를 사용할 것입니다 ... – topchef

1

내가 할 거라고 다음

  1. 가되어 테스트 클래스 이름의 목록을 추출하는 findgrep의 조합을 사용하여; 예 : extend TestCase을 포함하는 파일의 경우 grep

  2. 테스트 보고서에서 findgrep의 일부 조합을 사용하여 실제로 실행 된 테스트 클래스 목록을 추출하십시오.

  3. 두 목록을 정렬하고 diff을 사용하여 비교하십시오.

위양성 및 위음성이 발생할 위험이 있습니다. 예 : TestCase을 직접 확장하지 않는 테스트 클래스는 그물을 통과 할 수 있습니다. 그러나이 접근법은 빠른 "첫 번째 상처"답을 줄 것입니다.

1

당신이 테스트의 목록을 생성 할 수 있습니다 TestSuite.tests() 사용 (재귀 적으로) 테스트 스위트에 당신이 (TestCase를 확장하는 클래스에서) 모든 테스트의 목록을 생성 할 수 있습니다 자바 반사를 사용하여 (목록 1) 및 (리스트 2)를 포함.

목록 1리스트 2에서 뺍니다. 어떤 제품군에도 포함되지 않은 테스트 목록을 생성합니다.

이 Java 프로그램을 실행할 때 classpath에 모든 테스트 클래스가 포함되어야합니다.

1

테스트 스위트를 수동으로 생성하지 않는 것이 좋습니다. 대신 빌드가 "tests"디렉토리 아래에있는 모든 테스트를 자동으로 실행하는지 확인하십시오. Ant는 <junit> 요소를 사용하여이를 수행하는 방법을 지원합니다.

TestCase를 확장하는 모든 비 추상적 클래스를 찾아 실행할 테스트를 찾는 제품군을 만들 수도 있습니다. Reflections으로 자신의 반사 스위트를 돌리거나 무료 구현을 검색 할 수 있습니다 (How do I programmatically run all the JUnit tests in my Java application? 참조)

관련 문제