2012-11-02 1 views
2

주어진 JUnit4 테스트가 실행되면 모든 TestResults의 로그 파일을 생성해야합니다. 나는 CI/ant/maven을 통해 이것을 호출하고 싶지 않다. 어디서나 JUnit 테스트를 호출 할 때마다 실행되도록하고 싶습니다. 그럴 수 없다면, 내 AllTestSuites 클래스를 호출하고 모든 결과 자체를 기록하는 자체 러너를 작성하고 싶습니다.JUnit4의 테스트 합격/불합격 결과를 파일에 기록하는 방법은 무엇입니까?

public class SimpleTestSuite extends TestCase{ 

    @Test 
    public void simpleTestPass() { 
     assertTrue(true); 
    } 

    @Test 
    public void simpleTestFail() { 
     assertTrue(false); 
    } 

    @Test 
    public void simpleTestException() { 
     throw new RuntimeException(); 
    } 

} 

내가 내 테스트 스위트의 모든 실행 들어있는 TestSuite, 그것을 포함 : 여기

내 테스트 클래스 중 하나가 될 것입니다

@RunWith(Suite.class) 
@Suite.SuiteClasses({SimpleTestSuite.class, ExampleSuite.class,}) 
public final class AllTestSuites {} 

내가 AllTestSuites를 호출하고 싶은 아래와 같이 로그 파일을 생성하십시오. JUnit4 프레임 워크의 결과 버스에있는 것을 캡처하고 새 테스트 러너를 다시 작성하거나 만들지 않는 것이 좋습니다.

simpleTestPass - pass - 1/1 assertions passed 
simpleTestFail - fail - 0/1 assertions passed 
simpleTestException - exception - stacktrace as follows... 

답변

5

추가 로거 당신의 테스트 클래스 및 기본 테스트 클래스와는 아래 TestWatchMan로 정의

Logger logger = LoggerFactory.getLogger(TestCase.class); 
@Rule public MethodRule watchman = new TestWatchman() { 
    public void starting(FrameworkMethod method) { 
     logger.info("Test {} is running.", method.getName()); 
    } 
    public void succeeded(FrameworkMethod method) { 
    logger.info("Test {} succesfully run.", method.getName()); 
    } 
    public void failed(Throwable e, FrameworkMethod method) { 
     logger.error("Test {} failed with {} reason.", 
               method.getName(), e.getMessage()); 
    } 
}; 
0

의 JUnit을 출력 표준 System.out에에 그 결과. 아마도 출력을 파일로 재지향 할 수 있습니다.

@BeforeClass 
void redirectOut(){ 
    System.setOut(new PrintStream(new OutputStream() { 
     @Override 
     public void write(int arg0) throws IOException { 
     // TODO Auto-generated method stub 

     } 
    })); 
} 
1

JUnit TestWatcher을 사용할 수 있습니다.

TestWatcher는 다음과 같은 방법을 정의

  • ()는
  • 이 완료()를 구현할 수있는

통보를 얻을() 시작()

  • 실패 성공 이벤트를 작성하여 파일에 기록하십시오.

  • 관련 문제