2017-11-22 4 views
0

testNg를 사용하여 테스트 한 결과 테스트가 실패 할 때마다 db에 실패 수명을 저장합니다. 실패한 모든 사례를 다시 실행하는 것 이외의 다른 방법이 있습니까? 예를 들면 다음과 같습니다. 실패 연령이 1 인 경우에만 다시 실행합니다. after 메서드에서 특정 테스트를 다시 실행하도록 결정할 수 있어야합니다.테스트 실행 실패 다른 조건에서 테스트 실패

답변

0

네, 유행에 관한 일종의 이야기입니다.

먼저 클래스가 IHookable 인터페이스를 구현하도록함으로써 시작하십시오. 그러면 TestNG는 항상 테스트가 실행될 run() 메소드를 실행하게됩니다. 따라서이 run() 구현에서는 기본적으로 DB에서 테스트 메소드를 쿼리하여 장애 발생 연령이 재실행을 보증하는지 여부를 확인한 다음 테스트에 실패합니다. 그런 다음 재시도 분석기를 테스트에 연결하면 오류가 다시 발생할 수 있습니다.

해야합니다.

다음은 이름을 기준으로 테스트 방법에 조건부로 실패했음을 보여주는 샘플입니다. 그 조건부 검사는 장애 연령에 따라 결정하도록 향상시킬 수 있습니다. 여기

import org.testng.IHookCallBack; 
import org.testng.IHookable; 
import org.testng.ITestResult; 
import org.testng.annotations.Test; 

public class TestClassSample implements IHookable { 
    @Override 
    public void run(IHookCallBack callBack, ITestResult testResult) { 
     if ("testMethod1".equals(testResult.getMethod().getMethodName())) { 
      testResult.setStatus(ITestResult.FAILURE); 
     } else { 
      callBack.runTestMethod(testResult); 
     } 
    } 

    @Test 
    public void testMethod1() { 
     System.err.println("testMethod1()"); 
    } 

    @Test 
    public void testMethod2() { 
     System.err.println("testMethod2()"); 
    } 
} 

출력입니다 :

testMethod2() 

=============================================== 
Default Suite 
Total tests run: 2, Failures: 1, Skips: 0 
=============================================== 
+0

이 멋진,하지만 난 시험 전에 결정하는 것), 첫 번째 실행 한 후이 실행합니다 (테스트를 실행할 수있는 무언가를 찾고 있었다, 나는이었다 테스트가 실패한 후 다시 트리거 할 수있는 무언가를 찾으십시오. –

+0

@FrancisChristopher - 내가 공유 한 샘플이이를 수행 할 수 있어야합니다. 'callBack()'을 통해 테스트 메소드를 호출 한 후 테스트 상태를 검사하고 실패했는지 여부를 확인한 후에 기본적으로 테스트 상태의 변경을 이동해야합니다. 그러나 재시도 메커니즘은 여전히 ​​실행됩니다. 그러나 설정할 수있는 ITestResult 특성을 검토하여 퍼지 할 수 있어야합니다. –

+0

Krishnan, 고마워, 내가 말했듯이 할 수 있었다. –