在TestNg软断言中显示assertEquals错误消息和给定自定义消息的任何方法
这是 是否有任何方法可以显示默认assertEquals错误消息以及软断言中给出的自定义消息 我的要求是自定义消息和断言错误消息,如下所示。“应为[1]故障,但找到[0]”在TestNg软断言中显示assertEquals错误消息和给定自定义消息的任何方法,testng,assertions,Testng,Assertions,这是 是否有任何方法可以显示默认assertEquals错误消息以及软断言中给出的自定义消息 我的要求是自定义消息和断言错误消息,如下所示。“应为[1]故障,但找到[0]” 您可以创建自己的SoftAssert,这将发挥神奇的作用: public class MySoftAssert extends Assertion { // LinkedHashMap to preserve the order private Map<AssertionError, IAssert&g
您可以创建自己的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());
}
}
}
公共类MySoftAssert扩展了断言
{
//LinkedHashMap以保留顺序
私有映射m_errors=Maps.newLinkedHashMap();
@凌驾
公共无效执行服务器(IAssert a){
试一试{
a、 doAssert();
}捕获(断言错误示例){
资产失败(a,ex);
m_错误。put(ex,a);
}
}
公共无效资产所有(){
如果(!m_errors.isEmpty()){
StringBuilder sb=new StringBuilder(“以下断言失败:\n”);
布尔值优先=真;
对于(Map.Entry ae:m_errors.entrySet()){
如果(第一){
第一个=假;
}否则{
某人加上(“,”);
}
sb.append(ae.getKey().getMessage());
}
抛出新断言错误(sb.toString());
}
}
}
是的,似乎这只是目前的解决方案。
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());
}
}
}