Merge pull request #812 from juherr/issue-784
Fix issue #784: Duplicate error messages
diff --git a/src/main/java/org/testng/asserts/SoftAssert.java b/src/main/java/org/testng/asserts/SoftAssert.java
index 95dad5f..845bdea 100644
--- a/src/main/java/org/testng/asserts/SoftAssert.java
+++ b/src/main/java/org/testng/asserts/SoftAssert.java
@@ -11,7 +11,7 @@
*/
public class SoftAssert extends Assertion {
// LinkedHashMap to preserve the order
- private Map<AssertionError, IAssert<?>> m_errors = Maps.newLinkedHashMap();
+ private final Map<AssertionError, IAssert<?>> m_errors = Maps.newLinkedHashMap();
@Override
protected void doAssert(IAssert<?> a) {
@@ -28,21 +28,16 @@
}
public void assertAll() {
- if (! m_errors.isEmpty()) {
+ if (!m_errors.isEmpty()) {
StringBuilder sb = new StringBuilder("The following asserts failed:");
boolean first = true;
for (Map.Entry<AssertionError, IAssert<?>> ae : m_errors.entrySet()) {
if (first) {
first = false;
} else {
- sb.append(", ");
+ sb.append(",");
}
sb.append("\n\t");
- final String message = ae.getValue().getMessage();
- if (message != null) {
- sb.append(message).append("\t");
- }
- //noinspection ThrowableResultOfMethodCallIgnored
sb.append(ae.getKey().getMessage());
}
throw new AssertionError(sb.toString());
diff --git a/src/test/java/test/assertion/SoftAssertTest.java b/src/test/java/test/assertion/SoftAssertTest.java
index 66e850c..2aebaed 100644
--- a/src/test/java/test/assertion/SoftAssertTest.java
+++ b/src/test/java/test/assertion/SoftAssertTest.java
@@ -33,15 +33,18 @@
@Test
public void testAssertAllCount() throws Exception {
- final SoftAssert sa = new SoftAssert();
+ String message = "My message";
+ SoftAssert sa = new SoftAssert();
sa.assertTrue(true);
- sa.assertTrue(false);
+ sa.assertTrue(false, message);
try {
sa.assertAll();
Assert.fail("Exception expected");
} catch (AssertionError e) {
- final String message = e.getMessage();
- Assert.assertEquals(message.split("\r?\n").length, 2, message);
+ String[] lines = e.getMessage().split("\r?\n");
+ Assert.assertEquals(lines.length, 2);
+ lines[1] = lines[1].replaceFirst(message, "");
+ Assert.assertFalse(lines[1].contains(message));
}
}
}