Search in sources :

Example 1 with MultipleFailuresError

use of org.opentest4j.MultipleFailuresError in project intellij-community by JetBrains.

the class JUnit5TestExecutionListener method testFailure.

private void testFailure(String methodName, String id, String messageName, Throwable ex, long duration, String reason, boolean includeThrowable) {
    final Map<String, String> attrs = new LinkedHashMap<>();
    attrs.put("name", methodName);
    attrs.put("id", id);
    if (duration > 0) {
        attrs.put("duration", Long.toString(duration));
    }
    if (reason != null) {
        attrs.put("message", reason);
    }
    try {
        if (ex != null) {
            ComparisonFailureData failureData = null;
            if (ex instanceof MultipleFailuresError && ((MultipleFailuresError) ex).hasFailures()) {
                for (AssertionError assertionError : ((MultipleFailuresError) ex).getFailures()) {
                    testFailure(methodName, id, messageName, assertionError, duration, reason, false);
                }
            } else if (ex instanceof AssertionFailedError && ((AssertionFailedError) ex).isActualDefined() && ((AssertionFailedError) ex).isExpectedDefined()) {
                final ValueWrapper actual = ((AssertionFailedError) ex).getActual();
                final ValueWrapper expected = ((AssertionFailedError) ex).getExpected();
                failureData = new ComparisonFailureData(expected.getStringRepresentation(), actual.getStringRepresentation());
            } else {
                //try to detect failure with junit 4 if present in the classpath
                try {
                    failureData = ExpectedPatterns.createExceptionNotification(ex);
                } catch (Throwable ignore) {
                }
            }
            if (includeThrowable || failureData == null) {
                ComparisonFailureData.registerSMAttributes(failureData, getTrace(ex), ex.getMessage(), attrs, ex, "Comparison Failure: ", "expected: <");
            } else {
                ComparisonFailureData.registerSMAttributes(failureData, "", "", attrs, ex, "", "expected: <");
            }
        }
    } finally {
        myPrintStream.println("\n" + MapSerializerUtil.asString(messageName, attrs));
    }
}
Also used : ValueWrapper(org.opentest4j.ValueWrapper) ComparisonFailureData(com.intellij.rt.execution.junit.ComparisonFailureData) AssertionFailedError(org.opentest4j.AssertionFailedError) LinkedHashMap(java.util.LinkedHashMap) MultipleFailuresError(org.opentest4j.MultipleFailuresError)

Example 2 with MultipleFailuresError

use of org.opentest4j.MultipleFailuresError in project intellij-community by JetBrains.

the class JUnit5EventsTest method multipleFailures.

@Test
void multipleFailures() throws Exception {
    TestDescriptor testDescriptor = new MethodTestDescriptor(UniqueId.forEngine("engine"), TestClass.class, TestClass.class.getDeclaredMethod("test1"));
    TestIdentifier identifier = TestIdentifier.from(testDescriptor);
    myExecutionListener.executionStarted(identifier);
    MultipleFailuresError multipleFailuresError = new MultipleFailuresError("2 errors");
    multipleFailuresError.addFailure(new AssertionFailedError("message1", "expected1", "actual1"));
    multipleFailuresError.addFailure(new AssertionFailedError("message2", "expected2", "actual2"));
    myExecutionListener.executionFinished(identifier, TestExecutionResult.failed(multipleFailuresError));
    Assertions.assertEquals("##teamcity[enteredTheMatrix]\n" + "\n" + "##teamcity[testStarted id='|[engine:engine|]' name='test1()' locationHint='java:test://com.intellij.junit5.JUnit5EventsTest$TestClass.test1']\n" + "\n" + "##teamcity[testFailed name='test1()' id='|[engine:engine|]' details='' message='' expected='expected1' actual='actual1']\n" + "\n" + "##teamcity[testFailed name='test1()' id='|[engine:engine|]' details='' message='' expected='expected2' actual='actual2']\n" + "\n" + "##teamcity[testFailed name='test1()' id='|[engine:engine|]' details='TRACE' message='2 errors (2 failures)|n\tmessage1|n\tmessage2']\n" + "\n" + "##teamcity[testFinished id='|[engine:engine|]' name='test1()']\n", StringUtil.convertLineSeparators(myBuf.toString()));
}
Also used : MethodTestDescriptor(org.junit.jupiter.engine.descriptor.MethodTestDescriptor) TestIdentifier(org.junit.platform.launcher.TestIdentifier) AssertionFailedError(org.opentest4j.AssertionFailedError) MethodTestDescriptor(org.junit.jupiter.engine.descriptor.MethodTestDescriptor) TestFactoryTestDescriptor(org.junit.jupiter.engine.descriptor.TestFactoryTestDescriptor) ClassTestDescriptor(org.junit.jupiter.engine.descriptor.ClassTestDescriptor) TestDescriptor(org.junit.platform.engine.TestDescriptor) MultipleFailuresError(org.opentest4j.MultipleFailuresError)

Aggregations

AssertionFailedError (org.opentest4j.AssertionFailedError)2 MultipleFailuresError (org.opentest4j.MultipleFailuresError)2 ComparisonFailureData (com.intellij.rt.execution.junit.ComparisonFailureData)1 LinkedHashMap (java.util.LinkedHashMap)1 ClassTestDescriptor (org.junit.jupiter.engine.descriptor.ClassTestDescriptor)1 MethodTestDescriptor (org.junit.jupiter.engine.descriptor.MethodTestDescriptor)1 TestFactoryTestDescriptor (org.junit.jupiter.engine.descriptor.TestFactoryTestDescriptor)1 TestDescriptor (org.junit.platform.engine.TestDescriptor)1 TestIdentifier (org.junit.platform.launcher.TestIdentifier)1 ValueWrapper (org.opentest4j.ValueWrapper)1