[testng] 03/160: Fix #onAssertSuccess called after #onAssertFailure in SoftAssert Improve failure message in SoftAssert#assertAll

Eugene Zhukov eugene-guest at moszumanska.debian.org
Tue Aug 18 10:22:13 UTC 2015


This is an automated email from the git hooks/post-receive script.

eugene-guest pushed a commit to annotated tag testng-6.9.5
in repository testng.

commit af1371d38943837477b602720e6147f34ec2521b
Author: Vladislav Rassokhin <vladislav.rassokhin at jetbrains.com>
Date:   Tue Apr 1 19:16:49 2014 +0400

    Fix #onAssertSuccess called after #onAssertFailure in SoftAssert
    Improve failure message in SoftAssert#assertAll
---
 src/main/java/org/testng/asserts/SoftAssert.java | 17 ++++++--
 src/test/java/test/assertion/SoftAssertTest.java | 53 ++++++++++++++++++++++++
 src/test/resources/testng.xml                    |  1 +
 3 files changed, 68 insertions(+), 3 deletions(-)

diff --git a/src/main/java/org/testng/asserts/SoftAssert.java b/src/main/java/org/testng/asserts/SoftAssert.java
index f06f1d5..8c33421 100644
--- a/src/main/java/org/testng/asserts/SoftAssert.java
+++ b/src/main/java/org/testng/asserts/SoftAssert.java
@@ -14,18 +14,23 @@ public class SoftAssert extends Assertion {
   private Map<AssertionError, IAssert> m_errors = Maps.newLinkedHashMap();
 
   @Override
-  public void executeAssert(IAssert a) {
+  protected void doAssert(IAssert a) {
+    onBeforeAssert(a);
     try {
       a.doAssert();
-    } catch(AssertionError ex) {
+      onAssertSuccess(a);
+    } catch (AssertionError ex) {
       onAssertFailure(a, ex);
       m_errors.put(ex, a);
+    } finally {
+      onAfterAssert(a);
     }
   }
 
+
   public void assertAll() {
     if (! m_errors.isEmpty()) {
-      StringBuilder sb = new StringBuilder("The following asserts failed:\n");
+      StringBuilder sb = new StringBuilder("The following asserts failed:");
       boolean first = true;
       for (Map.Entry<AssertionError, IAssert> ae : m_errors.entrySet()) {
         if (first) {
@@ -33,6 +38,12 @@ public class SoftAssert extends Assertion {
         } else {
           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
new file mode 100644
index 0000000..898a334
--- /dev/null
+++ b/src/test/java/test/assertion/SoftAssertTest.java
@@ -0,0 +1,53 @@
+package test.assertion;
+
+import org.testng.Assert;
+import org.testng.annotations.Test;
+import org.testng.asserts.IAssert;
+import org.testng.asserts.SoftAssert;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+public class SoftAssertTest {
+  @Test
+  public void testOnSucceedCalled() throws Exception {
+    final Collection<IAssert> succeed = new ArrayList<IAssert>();
+    final SoftAssert sa = new SoftAssert() {
+      @Override
+      public void onAssertSuccess(IAssert assertCommand) {
+        succeed.add(assertCommand);
+      }
+    };
+    sa.assertTrue(true);
+    sa.assertTrue(false);
+    Assert.assertEquals(succeed.size(), 1, succeed.toString());
+  }
+
+  @Test
+  public void testOnFailureCalled() throws Exception {
+    final Collection<IAssert> failured = new ArrayList<IAssert>();
+    final SoftAssert sa = new SoftAssert() {
+      @Override
+      public void onAssertFailure(IAssert assertCommand, AssertionError ex) {
+        failured.add(assertCommand);
+      }
+    };
+    sa.assertTrue(true);
+    sa.assertTrue(false);
+    Assert.assertEquals(failured.size(), 1, failured.toString());
+  }
+
+  @Test
+  public void testAssertAllCount() throws Exception {
+    final SoftAssert sa = new SoftAssert();
+    sa.assertTrue(true);
+    sa.assertTrue(false);
+    try {
+      sa.assertAll();
+      Assert.fail("Exception expected");
+    } catch (AssertionError e) {
+      final String message = e.getMessage();
+      Assert.assertEquals(message.split("\r?\n").length, 2, message);
+    }
+  }
+}
diff --git a/src/test/resources/testng.xml b/src/test/resources/testng.xml
index da203c0..eedd444 100644
--- a/src/test/resources/testng.xml
+++ b/src/test/resources/testng.xml
@@ -729,6 +729,7 @@
   <test name="Assertion">
     <classes>
       <class name="test.assertion.AssertionTest"/>
+      <class name="test.assertion.SoftAssertTest"/>
     </classes>
   </test>
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/testng.git



More information about the pkg-java-commits mailing list