diff options
Diffstat (limited to 'junit4/src/test/java/org/junit/tests/experimental/rules/VerifierRuleTest.java')
-rw-r--r-- | junit4/src/test/java/org/junit/tests/experimental/rules/VerifierRuleTest.java | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/junit4/src/test/java/org/junit/tests/experimental/rules/VerifierRuleTest.java b/junit4/src/test/java/org/junit/tests/experimental/rules/VerifierRuleTest.java new file mode 100644 index 0000000..ef75174 --- /dev/null +++ b/junit4/src/test/java/org/junit/tests/experimental/rules/VerifierRuleTest.java @@ -0,0 +1,133 @@ +package org.junit.tests.experimental.rules; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; +import static org.junit.experimental.results.PrintableResult.testResult; +import static org.junit.experimental.results.ResultMatchers.hasFailureContaining; +import static org.junit.experimental.results.ResultMatchers.isSuccessful; + +import java.util.concurrent.Callable; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.experimental.results.PrintableResult; +import org.junit.rules.ErrorCollector; +import org.junit.rules.Verifier; + +public class VerifierRuleTest { + public static class UsesErrorCollector { + @Rule + public ErrorCollector collector= new ErrorCollector(); + + @Test public void example() { + collector.addError(new Throwable("message")); + } + } + + @Test public void usedErrorCollectorShouldFail() { + assertThat(testResult(UsesErrorCollector.class), hasFailureContaining("message")); + } + + public static class UsesErrorCollectorTwice { + @Rule + public ErrorCollector collector= new ErrorCollector(); + + @Test public void example() { + collector.addError(new Throwable("first thing went wrong")); + collector.addError(new Throwable("second thing went wrong")); + } + } + + @Test public void usedErrorCollectorTwiceShouldFail() { + PrintableResult testResult= testResult(UsesErrorCollectorTwice.class); + assertThat(testResult, hasFailureContaining("first thing went wrong")); + assertThat(testResult, hasFailureContaining("second thing went wrong")); + } + + public static class UsesErrorCollectorCheckThat { + @Rule + public ErrorCollector collector= new ErrorCollector(); + + @Test public void example() { + collector.checkThat(3, is(4)); + collector.checkThat(5, is(6)); + collector.checkThat("reason 1", 7, is(8)); + collector.checkThat("reason 2", 9, is(16)); + } + } + + @Test public void usedErrorCollectorCheckThatShouldFail() { + PrintableResult testResult= testResult(UsesErrorCollectorCheckThat.class); + assertThat(testResult, hasFailureContaining("got: <3>")); + assertThat(testResult, hasFailureContaining("got: <5>")); + assertThat(testResult, hasFailureContaining("reason 1")); + assertThat(testResult, hasFailureContaining("got: <7>")); + assertThat(testResult, hasFailureContaining("reason 2")); + assertThat(testResult, hasFailureContaining("got: <9>")); + } + + public static class UsesErrorCollectorCheckSucceeds { + @Rule + public ErrorCollector collector= new ErrorCollector(); + + @Test public void example() { + collector.checkSucceeds(new Callable<Object>() { + public Object call() throws Exception { + throw new RuntimeException("first!"); + } + }); + collector.checkSucceeds(new Callable<Object>() { + public Object call() throws Exception { + throw new RuntimeException("second!"); + } + }); + } + } + + @Test public void usedErrorCollectorCheckSucceedsShouldFail() { + PrintableResult testResult= testResult(UsesErrorCollectorCheckSucceeds.class); + assertThat(testResult, hasFailureContaining("first!")); + assertThat(testResult, hasFailureContaining("second!")); + } + + public static class UsesErrorCollectorCheckSucceedsPasses { + @Rule + public ErrorCollector collector= new ErrorCollector(); + + @Test public void example() { + assertEquals(3, collector.checkSucceeds(new Callable<Object>() { + public Object call() throws Exception { + return 3; + } + })); + } + } + + @Test public void usedErrorCollectorCheckSucceedsShouldPass() { + PrintableResult testResult= testResult(UsesErrorCollectorCheckSucceedsPasses.class); + assertThat(testResult, isSuccessful()); + } + + private static String sequence; + + public static class UsesVerifier { + @Rule + public Verifier collector= new Verifier() { + @Override + protected void verify() { + sequence+= "verify "; + } + }; + + @Test public void example() { + sequence+= "test "; + } + } + + @Test public void verifierRunsAfterTest() { + sequence = ""; + assertThat(testResult(UsesVerifier.class), isSuccessful()); + assertEquals("test verify ", sequence); + } +}
\ No newline at end of file |