2012-12-17 4 views
4

testng 스위트를 실행할 때 무시해야하는 테스트 클래스가 있습니다. 무시해야 할 클래스 및 메서드에 대해 @Test (enabled = false) 주석을 사용하여 시도했습니다. 하지만 내 문제는 무시해야 할 클래스가 추상 클래스를 확장한다는 것이고이 추상 클래스 테스트 메서드는 기본 클래스에 @Test (enabled = false) 주석이있는 경우에도 무시되지 않습니다. Junit에서는 기본 클래스에서 @ignore를 사용할 수 있었고 확장 클래스의 테스트 메서드는 전혀 호출되지 않았습니다. 어떻게 testng 에서이 동작을 복제 할 수 있습니다.testng 클래스를 무시합니다.

또한 내 testng 제품군에서 나는 테스트를 클래스가 아닌 패키지로 실행한다. 따라서 클래스를 그룹화하고 그룹을 무시하려고해도 그룹이 작동하지 않습니다. <test name="Test"> <groups> <run> <exclude name="testClass"/> </run> </groups>
<packages>

내가 구글 그룹 (TestNG를)에서이에 세드릭의 응답을받은

+0

TestNG 6.8을 사용하고 있습니까? –

+0

@CedricBeust : 예 TestNG 버전 6.8을 사용하고 있습니다. –

답변

4

도와주세요. 나는

안녕 바울은

은 당신이보고있는 것은 주석 및 기본 속성의 방법으로 상속의 불행한 결과입니다 참조 아래에 붙여 넣기하여 TestNG에서 서로 상호 작용하고, 버그가 수 있도록 제출 된입니다 그것은 더 잘 작동합니다 (나는 이드를 편리하게 사용하지 않습니다).

고려 : TestNG를 다음 주석을 해결하면

@Test(enabled = false) 
public class C { 
    @Test 
    public void f() 
} 

, 그것은 그것을 기본 값을 할당하도록하는 방법에 @Test는 "활성화"지정하지 않는 것을 발견. 예제가된다 :

@Test(enabled = false) 
public class C { 
    @Test(enabled = true) 
    public void f() 
} 

그리고 지금은, 메소드 레벨에서 정의 된 값은 클래스에 지정된 하나를 우선합니다.

수정 사항은 부울 (Enabled, Disabled, Inherited, 기본값 임) 대신 enum을 사용하는 것이지만 이전 버전과의 호환성을 없애기 때문에 새 주석을 도입해야합니다 (예 : runStatus "또는 같은), 그리고 예

@Test(runStatus = DISABLED) 
public class C { 
    @Test 
    public void f() 
} 

이 메이크업 감각을합니까 될 것입니다?

- 세드릭

세드릭, 메소드 레벨 테스트 주석 재정의 클래스 레벨 테스트 주석의 응답에서 언급 한 바와 같이
1

. 따라서 클래스 수준에서 @Test (enabled = false)를 사용하는 경우에도 테스트 메서드가 활성화됩니다. 나는 똑같은 문제에 직면했다. 다음과 같은 방법으로 해결되었습니다.

가장 간단한 해결책은 클래스 수준에서 @Test (enabled = false)를 사용하지만 메서드 수준에서 @Test 주석을 제거하는 것입니다. 이렇게 :

@Test(enabled = false) 
public class C 
{ 

    public void f() 

} 
관련 문제