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 <[email protected]> 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 _______________________________________________ pkg-java-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

