2011-03-31 3 views
0

개미를 통해 특정 테스트를 중단하는 것이 가능한지 궁금합니다. EX : 나는 다음과 같은 트리 구조가 : 내가 JUnit을 통해 개미를 실행하면 내가 궁금junit ant에서 멈추는 방법이 있습니까

test 
    package1 
    TU_file1.java 
    TU_file2.java 
    package2 
    TU_file3.java 
    TU_file4.java 

를, 내가 파일 1, 2, 3을 실행하고 바로 중지 할 수있는 방법이있다. 4 번째 실패한 테스트 유닛을 실행하기 전에 데이터베이스를 가져오고 싶습니다. 네 번째 테스트를 실행하기 전에 완벽한 환경을 원했습니다. 파일 세트 또는 패턴 세트로이를 수행 할 수있는 방법이 있습니까? 옵션 failonerror가 있다는 것을 알고 있지만, 4 번째 테스트를 전혀 실행하지 않으려 고합니다.

감사합니다.

+0

가 왜 프로그래밍 테스트 케이스의 설정에서 데이터베이스 (@BeforeClass 또는 설치를() ..) 초기화/재설정 할 수 없습니다? – oers

+0

문제는 데이터베이스가 tearDown() 메소드에서 제대로 정리되지 않고 어떤 코드가 잘못된 코드를 남기고 있는지 찾기 어렵다는 것입니다. 나는 테스트 전에 실행 된 모든 것에 대한 스냅 샷을 잡고 테스트 유닛을 디버그 할 방법을 원했습니다. – Steve

답변

0

개미 솔루션은 JUnit을 작업에 파일 세트를 추가하는 것입니다

<fileset dir="${src.tests}"> 
    <include name="**/TU_file*.java"/> <!-- or some other all inclusive pattern --> 
    <exclude name="**/package2/TU_file4.java"/> <!-- exclude TU_file4.java --> 
</fileset> 

의 JUnit 4.x의 솔루션은 제외하려는 시험에 @Ignore 주석을 추가하는 것입니다.

EDIT : TU_file4가 실행되기 전에 실행을 중단하려면 System.in의 입력을 기다리는 @BeforeClass 메서드를 추가하십시오.

+0

문제의 테스트 단위를 제외하고 싶지 않습니다. 나는 그것이 TU_file4.java를 치기 전에 잠시 멈추고 계속하기를 원한다. 이 솔루션은 테스트 유닛을 제외하는 것입니다. 위의 다른 테스트 유닛이 어떤 종류의 정리 나 분해를하지 못하게하고 싶습니다. 이것은 기술적으로 4 파일 만 있고 모두 TU_file? .java 일 경우 작동하지만 불행히도 이는 예제 시나리오에 불과합니다. – Steve

0

<junit> 작업을 호출 할 때 Ant 빌드 파일에 패턴 일치로 실행할 테스트를 정의 할 수있는 <fileset> 요소를 포함시킬 수 있습니다. 예를 들어, <fileset> 안에있는 자원을 특별히 정의하여 TU_file4.java를 제외시킬 수 있습니다. 자세한 내용은 Apache documentation for the Ant JUnit Task을 참조하십시오.

그렇습니다. 단원 테스트의 가장 좋은 방법은 완료 한 후에 거칠기를 남기지 말아야한다는 것입니다.

+0

위의 테스트 유닛 중 일부가 원하지 않는 항목을 남기고 있다고 생각합니다. 따라서 네 번째 테스트 전에 테스트 유닛을 사용하고 기본 분석을 수행하고 뒤에 남은 것이 있는지 확인해야합니다. – Steve

+0

테스트 자체를 실행해도 똑같은 일이 발생합니까? 또는 수동으로 테스트를 문지르면? 그것들은 당신이되고 싶은 곳으로가는 두 가지 대안이 될 것입니다. 행운을 빕니다! –

+0

테스트를 단독으로 실행하면 통과 할 것이지만 여러 테스트를 실행하면 실패합니다. 이것은 도전적으로 문제를 일으키는 JVM에 대한 캐시 된 값을 보유하고있는 정적 목록에 기인한다고 생각합니다. – Steve

0

자바 디버그 모드를 고려 했습니까? 원격 디버깅을 사용하여 중단 점에서 실행을 중단하는 것이 좋습니다.

예컨대 :

편집 :

스위트 룸은 항상 사용자가 지정한 순서대로 실행해야합니다. @Test 메서드를 정렬하려면 고유 한 TestRunner를 만들어야합니다 (BlockJUnit4ClassRunner # computeTestMethods 확장). 의사 코드 :

@Override 
    public List computeTestMethods() 
    { 
    List myList = super.computeTestMethods(); 
    Collections.sort(myList, new MyTestMethodComaparator()); 
    return myList; 
    } 
+0

이클립스에서 모든 테스트 유닛을 실행 해 보았습니다. 유일한 문제는 일식과 개미의 순서가 다른 것입니다. 개미는 알파벳 순서로 junits를하고 이클립스는 임의의 순서로 그것을한다. 이클립스가 개미처럼 정확하게 알파벳순으로 작성했다면 완벽 할 것입니다. – Steve

+0

Suites를 사용하여 테스트 순서를 확인할 수 있습니다. Suite-Classes는 항상 주어진 순서대로 실행됩니다. 테스트 메소드 정렬은 junit 이론에 의해 좀 더 복잡하고 낙담적입니다. :). 필자는 자신의 TestRunner를 작성하고 computeTestMethod() 메소드를 오버라이드하여이 작업을 수행했습니다. – oers

+0

이클립스는 테스트 단위 패키지 이름을 기준으로 알파벳 순서와 같이 junit 테스트를 특정 순서로 실행하는 방법이 없다고 생각합니까? 이것은 내가 개미와 같은 방식으로 디버깅 할 수있는 톤 원인을 도와줍니다. – Steve

관련 문제