2010-01-08 4 views
0

JUnit을 사용하여 많은 통합 테스트를 수행하는 가장 좋은 방법은 무엇입니까?JUnit을 사용하여 많은 통합 테스트를 실행하는 더 좋은 방법은?

아래의 코드는 모든 테스트를 실행할 수 있다는 것을 확연히 발견했지만 큰 결점이 있습니다. 각 클래스의 tearDown() 메소드는 모두 실행될 때까지 호출되지 않습니다.

public class RunIntegrationTests extends TestSuite { 
    public RunIntegrationTests(){ 
    } 

    public static void main (String[] args){ 
     TestRunner.run(testSuite()); 
    } 

    public static Test testSuite(){ 

     TestSuite result = new TestSuite(); 

     result.addTest(new TestSuite(AgreementIntegrationTest.class)); 
     result.addTest(new TestSuite(InterestedPartyIntegrationTest.class)); 
     result.addTest(new TestSuite(WorkIntegrationTest.class)); 
     // further tests omitted for readability 

     return result; 
    } 
} 

클래스 실행되고, 데이터베이스에 연결 객체를로드하고, JFrame의에 표시. 나는 테스트를 가능하게하기 위해 setVisible 메소드를 오버라이드했다. 우리 머신을 빌드 할 때 자바 가상 머신은 데이터베이스에서로드해야하는 객체가 꽤 커서 위 코드를 실행할 때 메모리가 부족합니다. 각 클래스가 끝난 후에 tearDown() 메서드가 호출되면 메모리 문제가 해결됩니다.

더 나은 방법이 있습니까? Java 3.2에서 여전히 JUnit 3.8.2를 사용해야합니다. (

답변

1

JUnit Primer에 따라 문제가 발생하면 직접 테스트를 추가하면됩니다. .있는 TestSuite 사용 :.. 관계없이 방법이 스위트 룸에 번들되는 방법, 각 시험 방법의 실행을 책꽂이해야 설정 및 해체 매우 이상하다

result.addTest(new AgreementIntegrationTest())); 
    result.addTest(new InterestedPartyIntegrationTest())); 
    result.addTest(new WorkIntegrationTest())); 
0

나는 일반적으로 약간 다르게 그것을 할

TestSuite suite = new TestSuite("Suite for ...") ; 

suite.addTestSuite(JUnit_A.class) ; 
suite.addTestSuite(JUnit_B.class) ; 

그리고 tearDown이 실제로 정확한 횟수만큼 호출되었다는 것을 확인했습니다. 그러나 당신의 방법은 잘 작동 할 것입니다.

tearDown이 올바르게 지정되었는지 확인하십시오. 예 : "해체"가 아니에요? 하나의 테스트 클래스를 독자적으로 실행하면 tearDown이 제대로 호출되는 것입니까?