From ab51452ac565d286b7bbd5a13767253c317bb29f Mon Sep 17 00:00:00 2001 From: dsaff Date: Mon, 3 May 2010 22:23:59 -0400 Subject: [PATCH] Fixes github#98: assumptions with expected exceptions --- acknowledgements.txt | 5 ++++- doc/ReleaseNotes4.9.txt | 5 +++++ .../junit/internal/runners/statements/ExpectException.java | 3 +++ .../java/org/junit/tests/experimental/AssumptionTest.java | 5 +++++ 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/acknowledgements.txt b/acknowledgements.txt index b6beea1c5997..4cb056c93372 100644 --- a/acknowledgements.txt +++ b/acknowledgements.txt @@ -58,4 +58,7 @@ Kristian Rosenvold: Submitted a patch (github#16) that improves thread-safety of result counting 2010 Feb 08 - Paul Holser: Submitted additional test for TestName rule. \ No newline at end of file + Paul Holser: Submitted additional test for TestName rule. + +2010 May 03 + jonas22@github: Found bug (github#98) with assumptions and expected exceptions. \ No newline at end of file diff --git a/doc/ReleaseNotes4.9.txt b/doc/ReleaseNotes4.9.txt index e69de29bb2d1..cbee7e45b8b0 100644 --- a/doc/ReleaseNotes4.9.txt +++ b/doc/ReleaseNotes4.9.txt @@ -0,0 +1,5 @@ +## Summary of Changes in version 4.9 ## + +### Bug fixes ### + +- github#98: assumeTrue() does not work with expected exceptions \ No newline at end of file diff --git a/src/main/java/org/junit/internal/runners/statements/ExpectException.java b/src/main/java/org/junit/internal/runners/statements/ExpectException.java index d9da2daa0616..ddfef0724245 100644 --- a/src/main/java/org/junit/internal/runners/statements/ExpectException.java +++ b/src/main/java/org/junit/internal/runners/statements/ExpectException.java @@ -3,6 +3,7 @@ */ package org.junit.internal.runners.statements; +import org.junit.internal.AssumptionViolatedException; import org.junit.runners.model.Statement; public class ExpectException extends Statement { @@ -20,6 +21,8 @@ public void evaluate() throws Exception { try { fNext.evaluate(); complete = true; + } catch (AssumptionViolatedException e) { + throw e; } catch (Throwable e) { if (!fExpected.isAssignableFrom(e.getClass())) { String message= "Unexpected exception, expected<" diff --git a/src/test/java/org/junit/tests/experimental/AssumptionTest.java b/src/test/java/org/junit/tests/experimental/AssumptionTest.java index 153b942405f0..3c0fd9c8ff5e 100644 --- a/src/test/java/org/junit/tests/experimental/AssumptionTest.java +++ b/src/test/java/org/junit/tests/experimental/AssumptionTest.java @@ -169,4 +169,9 @@ public AssumptionFailureInConstructor() { @Test public void failingAssumptionInConstructorIgnoresClass() { assertThat(testResult(AssumptionFailureInConstructor.class), isSuccessful()); } + + @Test(expected = IllegalArgumentException.class) + public void assumeWithExpectedException() { + assumeTrue(false); + } }