2015-04-28 4 views
1

Вот a linkЛюбого способа показать сообщение об ошибке assertEquals вместе с данным пользовательским сообщением в TestNG мягкого утверждении

Есть ли способ, чтобы отобразить сообщение о assertEquals по умолчанию ошибки вместе с пользовательскими сообщениями, приведенных в мягком утверждении?

Мое требование состоит в том, чтобы иметь сообщение об ошибке и сообщение об ошибке, как показано ниже. «Разрушенный ожидается [1], но нашел [0]»

import org.testng.annotations.Test; 
import org.testng.asserts.SoftAssert; 

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

ответ

0

Вы можете создать свой собственный SoftAssert, это должно сделать магии:

public class MySoftAssert extends Assertion 
{ 
    // LinkedHashMap to preserve the order 
    private Map<AssertionError, IAssert> m_errors = Maps.newLinkedHashMap(); 

    @Override 
    public void executeAssert(IAssert a) { 
     try { 
      a.doAssert(); 
     } catch(AssertionError ex) { 
      onAssertFailure(a, ex); 
      m_errors.put(ex, a); 
     } 
    } 

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

Да, кажется, что это только решение на данный момент. –