From 1fc4acbb7f39719e58d374c7cc3e0b2a72f91a13 Mon Sep 17 00:00:00 2001 From: Christian Femers Date: Wed, 31 Mar 2021 17:55:22 +0200 Subject: [PATCH] Improve AssertionFailedError sanitization tests --- .../tum/in/test/api/ExceptionFailureTest.java | 29 ++++++++++++++----- .../tum/in/testuser/ExceptionFailureUser.java | 15 ++++++---- 2 files changed, 31 insertions(+), 13 deletions(-) diff --git a/src/test/java/de/tum/in/test/api/ExceptionFailureTest.java b/src/test/java/de/tum/in/test/api/ExceptionFailureTest.java index 26ce3875..57978fbb 100644 --- a/src/test/java/de/tum/in/test/api/ExceptionFailureTest.java +++ b/src/test/java/de/tum/in/test/api/ExceptionFailureTest.java @@ -1,5 +1,6 @@ package de.tum.in.test.api; +import static de.tum.in.test.testutilities.CustomConditions.testFailedWith; import static org.junit.platform.testkit.engine.EventConditions.*; import static org.junit.platform.testkit.engine.TestExecutionResultConditions.*; @@ -8,6 +9,7 @@ import org.assertj.core.error.AssertJMultipleFailuresError; import org.assertj.core.error.MultipleAssertionsError; import org.junit.platform.testkit.engine.Events; +import org.opentest4j.AssertionFailedError; import org.opentest4j.MultipleFailuresError; import de.tum.in.test.api.util.UnexpectedExceptionError; @@ -23,8 +25,9 @@ class ExceptionFailureTest { @UserTestResults private static Events tests; - private final String assertionFailed = "assertionFailed"; private final String assertJMultipleFailures = "assertJMultipleFailures"; + private final String assertionFailOnly = "assertionFailOnly"; + private final String assertionFailed = "assertionFailed"; private final String customException = "customException"; private final String exceptionInInitializer = "exceptionInInitializer"; private final String faultyGetCauseException = "faultyGetCauseException"; @@ -36,13 +39,6 @@ class ExceptionFailureTest { private final String throwExceptionInInitializerError = "throwExceptionInInitializerError"; private final String throwNullPointerException = "throwNullPointerException"; - @TestTest - void test_assertionFailed() { - tests.assertThatEvents().haveExactly(1, - event(test(assertionFailed), finishedWithFailure(instanceOf(AssertionError.class), - message(m -> m.contains("expected: <1> but was: <2>"))))); - } - @TestTest void test_assertJMultipleFailures() { tests.assertThatEvents().haveExactly(1, @@ -54,6 +50,23 @@ void test_assertJMultipleFailures() { new Condition<>(t -> t.getSuppressed().length == 2, "failures added as suppressed")))); } + @TestTest + void test_assertionFailOnly() { + tests.assertThatEvents().haveExactly(1, + testFailedWith(assertionFailOnly, AssertionFailedError.class, "This test failed. Penguin.")); + } + + @TestTest + void test_assertionFailed() { + tests.assertThatEvents().haveExactly(1, + event(test(assertionFailed), finishedWithFailure(instanceOf(AssertionFailedError.class), + message("expected: <1> but was: <2>"), new Condition<>(t -> { + var afe = (AssertionFailedError) t; + return afe.getActual().getStringRepresentation().equals("2") + && afe.getExpected().getStringRepresentation().equals("1"); + }, "expected and actual are correct")))); + } + @TestTest void test_customException() { tests.assertThatEvents().haveExactly(1, diff --git a/src/test/java/de/tum/in/testuser/ExceptionFailureUser.java b/src/test/java/de/tum/in/testuser/ExceptionFailureUser.java index d7a581ff..49755574 100644 --- a/src/test/java/de/tum/in/testuser/ExceptionFailureUser.java +++ b/src/test/java/de/tum/in/testuser/ExceptionFailureUser.java @@ -65,11 +65,6 @@ static class InitFailure { } } - @PublicTest - void assertionFailed() throws Exception { - assertEquals(1, 2); - } - @PublicTest void assertJMultipleFailures() { assertThat("ABC").satisfiesAnyOf(s -> { @@ -79,6 +74,16 @@ void assertJMultipleFailures() { }); } + @PublicTest + void assertionFailOnly() throws Exception { + org.junit.jupiter.api.Assertions.fail("This test failed. Penguin."); + } + + @PublicTest + void assertionFailed() throws Exception { + assertEquals(1, 2); + } + @PublicTest void customException() { throw new CustomException();