2011-02-11 8 views
2

내 단위 테스트에서 내 RunListener을 사용하고 싶습니다. 내 pom.xml에,Maven에서 JUnit RunListener 사용

public class MyRunListener extends RunListener { 

    public MyRunListener() { 
     System.out.println("Creation of Run Listener..."); 
    } 

    @Override 
    public void testStarted(Description description) throws Exception { 
     System.out.println("A Test is going to start"); 
    } 

} 

지금 : 그래서 다음 클래스를 만들었습니다

Creation of Run Listener... 

------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 
Running xxx.SomeNewTests 
     Test New #1 
     Test New #2 
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.109 sec 
Running xxx.SomeErrorTests 
     Test Old #1 
     Test Old #2 
Tests run: 2, Failures: 2, Errors: 0, Skipped: 0, Time elapsed: 0.125 sec <<< FAILURE! 

Results : 

Failed tests: 
    testOldOne(xxx.SomeErrorTests) 
    testOldTwo(xxx.SomeErrorTests) 

Tests run: 4, Failures: 2, Errors: 0, Skipped: 0 

[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
: 내 프로젝트 mvn test를 실행할 때

이제
 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <configuration> 
       <properties> 
        <property> 
         <name>listener</name> 
         <value>my.company.MyRunListener</value> 
        </property> 
       </properties> 
      </configuration> 
     </plugin> 

, 출력은 다음과 같다

볼 수 있듯이 테스트 실행 중에는 RunListener가 만들어 지지만 호출되지 않습니다.

내가 무엇을 놓쳤는가?

기술 정보 : 자바 6, 메이븐 3.0.2, JUnit을 4.8.1

+0

아마도 출력이 리디렉션됩니다 (테스트 출력과 같음). 다른 것을 시도해보십시오. 'System.exit (1)'. –

+0

동일한 문제가 있습니다. 해결책을 찾았습니까? – davorp

답변

2

이은 버전 2.7에 도입 된, 당신의 확실한 버전이 충분히 새로운 있는지 확인합니다.

다중 모듈 빌드의 첫 번째 모듈에 RunListener가 있으면이 모듈을 빌드 한 후에야 확실하게 사용할 수 없습니다. 꽤 논리적이지만 잊기 쉽습니다. JUnit4의 자바 문서 메인 클래스로

+0

확실한 플러그인의 버전을 표시하는 것을 잊어 버렸지 만, 테스트에서 가장 최근의 2.7.1을 사용했습니다. – romaintaz

0

는 :

JUnitCore은 테스트를 실행하기위한 외관입니다. JUnit 4 테스트, JUnit 3.8.x 테스트 및 혼합 실행을 지원합니다. 명령 에서 테스트를 실행하려면 java org.junit.runner.JUnitCore TestClass1 TestClass2 .... 을 실행하십시오. 한번의 테스트를 실행하려면 runClasses (Class [])라는 정적 메소드를 사용하십시오. 특수 수신기를 추가하려는 경우 먼저 JUnitCore 의 인스턴스를 만들고이 인스턴스를 사용하여 테스트를 실행하십시오.

문제를 해결하려면 내 CusomtJUnitCore를 작성하고 수신기를 추가 한 다음 명령 줄로 실행해야했습니다. 내가보고 목적을위한 확실한 - 플러그인을 사용하여 이후 : 지금 3 일이 문제를 해결하기 위해 노력하고 마지막 실수를 발견했습니다

1

받는다는 - 확실한 플러그인에서

구성 리스너가 TestNG를 잘 작동

, 나는 이미 pom.xml 내부에 리포팅 섹션을 가지고 있었고 거기서 커스텀 리스너를 지정하려고했다. 그 대신에 나는 그것을 pom의 build-section 안에 지정해야했다. 대신 작성 그러니까 기본적으로, :

<reporting> 
    <plugins> 
     [...] 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <configuration> 
       <properties> 
        <property> 
         <name>listener</name> 
         <value>my.company.MyRunListener</value> 
        </property> 
       </properties> 
      </configuration> 
     </plugin> 
     [...] 
</reporting> 

내가 작성한한다 :

<build> 
    <plugins> 
     [...] 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <configuration> 
       <properties> 
        <property> 
         <name>listener</name> 
         <value>my.company.MyRunListener</value> 
        </property> 
       </properties> 
      </configuration> 
     </plugin> 
     [...] 
</build> 

아마 그 obivous이었고, 난 그냥 전에 그것을하지 않았다, 그러나 이것은 내 문제를 해결했다.

관련 문제