2016-06-14 6 views
0

에 SoftAssert를 사용하여 모든 테스트 케이스에 대한 실패 횟수를 인쇄하는 방법 :나는 다음과 같은 수행하는 테스트 케이스가 TestNG를

@Test 
public void testNumber() { 
    SoftAssert softAssert = new SoftAssert(); 
    List<Integer> nums = Arrays.asList(1,2,3,4,5,6,7,8,9,10); 
    for (Integer num : nums){ 
     softAssert.assertTrue(num%2==0, String.format("\n Old num : %d", num); 
    } 
    softAssert.assertAll(); 
} 

위의 테스트 숫자 1,3,5,7 실패 할 것이다, 9 테스트 보고서에 다섯 개의 명령문이 인쇄됩니다.

큰 데이터 세트에 대한 테스트를 실행하면 테스트 케이스에 실패한 테스트 데이터의 수를 얻기가 어려워집니다.

softAssert 자체를 사용하여 테스트 케이스에 실패한 테스트 데이터의 수를 얻는 더 쉬운 방법이 있습니까?

답변

0

SoftAssert 자체에서 테스트 케이스에 실패한 테스트 데이터의 수를 쉽게 찾을 수 없습니다.

어설 션 클래스를 확장한다고 생각할 수도 있습니다. 다음은 테스트 사례에 실패한 테스트 데이터의 수를 으로 나타낸 샘플이며 각 실패를 새 줄에 인쇄합니다.

@Test 
    public void test() 
    { 
     AssertionExtn asert=new AssertionExtn(); 
     asert.assertEquals(false, true,"failed"); 
     asert.assertEquals(false, false,"passed"); 
     asert.assertEquals(0, 1,"brokedown"); 
     asert.assertAll(); 
    } 
:

package yourpackage; 

import java.util.Map; 

import org.testng.asserts.Assertion; 
import org.testng.asserts.IAssert; 
import org.testng.collections.Maps; 

public class AssertionExtn extends Assertion { 

private final Map<AssertionError, IAssert> m_errors; 

public AssertionExtn(){ 
    this.m_errors = Maps.newLinkedHashMap(); 
} 

protected void doAssert(IAssert a) { 
    onBeforeAssert(a); 
    try { 
     a.doAssert(); 
     onAssertSuccess(a); 
    } catch (AssertionError ex) { 
     onAssertFailure(a, ex); 
     this.m_errors.put(ex, a); 
    } finally { 
     onAfterAssert(a); 
    } 
} 

public void assertAll() { 
    if (!(this.m_errors.isEmpty())) { 
     StringBuilder sb = new StringBuilder("Total assertion failed: "+m_errors.size()); 
     sb.append("\n\t"); 
     sb.append("The following asserts failed:"); 
     boolean first = true; 
     for (Map.Entry ae : this.m_errors.entrySet()) { 
      if (first) 
       first = false; 
      else { 
       sb.append(","); 
      } 
      sb.append("\n\t"); 
      sb.append(((AssertionError)ae.getKey()).getMessage()); 
     } 
     throw new AssertionError(sb.toString()); 
    } 
} 
} 

당신은이를 사용할 수 있습니다