2012-10-24 2 views
2

현재 문제가 있습니다. 나는이 개 클래스를 생성, 하나는 추상적이고, 다른 하나는 첫 번째에서 상속 :Eclipse에서 TestNG 상속 동작 대 Jenkins

public abstract class A { 
     @BeforeClass 
     protected void setUp() { 
      Object o = new Object(); 
     } 

     @AfterClass 
     protected void tearDown() { 
      o = null; 
     } 

     @Test 
     public void T1() { 
      // whatever is done here 
     } 

     @Test(dependsOnMethod={"T1"}) 
     public void T2() { 
      // whatever is done here 
     } 
} 

@Test(singleThreaded=true) 
public class B extends A { 

     @Test(dependsOnMethod={"T2"}) 
     public void T3() { 
      System.out.println(o.toString()); 
     } 
} 

는 사실, 이클립스 & 젠킨스 사이에 2 개 개의 다른 행동을 얻었다. 이클립스에서 내 테스트를 실행하면

, 실행 순서는 다음과 같습니다

setUp() 
T1() 
T2() 
T3() 
tearDown() 

그러나 젠킨스에서, 실행 순서는 다음과 같습니다 결과

setUp() 
T1() 
T2() 
tearDown() 
T3() 

, 두 번째 경우에, T3() 메소드에 의해 Object o가 파기되었으므로 NullPointerException으로 인해 분명히 실패합니다. TestNG는 testng.xml 파일을 지정하여 maven-surefire-plugin을 사용하여 Jenkins에 의해 호출됩니다. 여기있다 : 모두 젠킨스 & 이클립스 같은 동작을 만들 수있는 방법은

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 

<suite name="TestSuite" parallel="classes" thread-count="1" verbose="1"> 
    <test name="Test B"> 
     <classes> 
     <class name="main.pkg.B" /> 
     </classes> 
    </test> 
</suite> 

있습니까? 그렇다면 모든 도움을 주시면 감사하겠습니다.

감사합니다,

세드릭

+0

이름을 setUpBeforeClass와 같은 것으로 변경하고 어떤 일이 발생하는지 확인하십시오. –

답변

0

그것은 일식에서 TestNG의 플러그인 버전이 프로젝트의 하나는 다른 것을 할 수있다.

maven을 사용하여 jenkins를 실행하면 pom의 testng 종속성이 사용됩니다. 반면 이클립스에 실행되는 데 사용되는 다른 testng 플러그인 버전을 구성했을 수 있습니다.

필자는 6.5.1을 pom의 testong 종속 버전으로, 6.5.2를 플러그인 버전으로 사용하고 있습니다. 둘 다 올바른 출력을 얻습니다. 필자는 이전에 6.2.1을 필자의 maven 의존성으로 testng했고, 나는 당신이보고있는 이슈를 볼 수 있었다. 그래서 아마 두 버전을 매치하는 것이 도움이 될 수 있습니다.

+0

감사합니다. 또한 Eclipse에서 TestNG 6.7 버전을 사용하는 반면 Jenkins에서 6.2.x 버전을 사용하고있었습니다! BTW, 변경 사항에서 6.3 버전으로 내 문제가 해결되었음을 발견했습니다. "일부 ABC 클래스가 서브 클래 싱 상황에서 실행되지 않음" –