2009-10-29 3 views
8

JUnit 을 사용하여 작성된 통합 테스트가 많이 있지만 여기에는 4.4으로 실행됩니다. 이들 중 일부는 클래스의 모든 테스트가 완료된 후 실행되는 tearDown 메소드가 필요합니다 (일부 공통 리소스를 비울 수 있도록).junit 3의 클래스 해체?

이 작업은 @AfterClass (org.junit)를 사용하여 junit 4에서 수행 할 수 있습니다. 그러나 이것을 TestCase (junit.framework. *)를 확장하는 기존 junit 3 테스트에 혼합하면 작동하지 않는 것 같습니다. [BTW는 아직 마이그레이션 도구가 있습니까? Question 264680은 1 년 전이 아님을 나타냅니다.]

이런 종류의 일에 junit.extensions.TestSetup을 사용하는 것에 대한 언급을 보았습니다. 이것에 대한 간단한 테스트는 효과가없는 것 같습니다. 어떤예요?

+0

우리가 수동으로 변환하고 모든 테스트를 확인하기 위해 현재 시간이 (그리고 JUnit 4에서는 주석을 사용하여 모든 관련 개발자를 양성)하지 않는 가정이 있지만, junit 3에서 AfterClass와 동등한 몇 가지 클래스를 다루기를 원합니다. –

답변

18

내 질문에 대한 답변을 찾았습니다 :) 내 질문을 게시하기 전에이 질문을 잠시 시도했지만 나에게 도움이되지 못했습니다. 그러나 우리의 테스트 프레임 워크가 junit을 기본값과 다르게 호출하기 때문에 그것이 다음 솔루션에서 필요한 "suite"메소드를 호출하지 않았기 때문에 실현되었습니다. Eclipse에서 번들 junit 러너를 사용하여 하나의 Test/TestCase를 직접 실행하면 정상적으로 실행됩니다.

junit 3에서 클래스 당 한 번 설정/해체를 수행하는 방법은 TestSuite를 사용하는 것입니다. 여기 junit.org에 대한 예제입니다 : Is there a way to make setUp() run only once?

public static Test suite() { 
    return new TestSetup(new TestSuite(YourTestClass.class)) { 

     protected void setUp() throws Exception { 
      System.out.println(" Global setUp "); 
     } 
     protected void tearDown() throws Exception { 
      System.out.println(" Global tearDown "); 
     } 
    }; 
} 
+0

Android에서 실행하셨습니까? 정확히 동일한 코드가 있지만 ClassNotFound 예외가 발생합니다. 이미이 문제에 직면 했습니까? YourTestClass가 TestCase를 확장합니까? –

+0

지금이 코드로 테스트를 실행할 수는 있지만 suite() 메서드가 호출되지 않은 것 같습니다. 이 방법에 전화를 걸려면 어떻게하셨습니까? 나는 당신이 JUnit (또는 당신의 IDE)에게 하나의 JUnit3 스타일 테스트 클래스를 실행하도록 알려주고 그 클래스가'Test' (또는 서브 클래스)를 리턴하는 public static'suite()'메소드를 가지고 있다면 @FelipeMosso가 자동으로 호출 될 것이지만 –

+0

테스트의 경우) 스위트를 생성하기 위해'suite()'메소드가 호출 될 것입니다. 그러나 수동으로 스위트를 생성하는 경우 suite() 메소드가 사용되는지 확인해야합니다 (클래스를 가져 오는'TestSuite' 생성자를 사용하여) – NamshubWriter

3

JUnit 4에서 테스트 클래스는 TestCase을 확장 할 필요가 없습니다. 대신 테스트 클래스의 이름이 *Test이고 각 테스트 메소드에 @Test이라는 주석이 있어야합니다. 이러한 변경을 시도한 다음 관련 방법에 @AfterClass 주석을 추가 했습니까?

현재 사용할 수있는 대부분의/모든 기능을 대체 할 주석이 있습니다 (예 : TestCase).

+0

클래스 전체 분해를 시도하는 것과 동시에 하나의 클래스를 junit 4 주석으로 변환하려고합니다. Eclipse/command-line으로 아직 행할 테스트가 없다고 생각하면 많은 행운이 없습니다. –

+0

나는 나의 대답을 업데이트했다, 내가 이전에 준 조언은 완전히 틀렸고 나는 지옥으로 떨어지게되었다. 위의 안내에 따라 다시 시도하십시오. –