diff --git a/subprojects/testing-base/src/main/java/org/gradle/api/internal/tasks/testing/junit/result/JUnitXmlResultWriter.java b/subprojects/testing-base/src/main/java/org/gradle/api/internal/tasks/testing/junit/result/JUnitXmlResultWriter.java index 5464d387ba4a..5f29f10829c2 100644 --- a/subprojects/testing-base/src/main/java/org/gradle/api/internal/tasks/testing/junit/result/JUnitXmlResultWriter.java +++ b/subprojects/testing-base/src/main/java/org/gradle/api/internal/tasks/testing/junit/result/JUnitXmlResultWriter.java @@ -352,6 +352,10 @@ private TestCaseExecution skipped(long classId, long id) { private Iterable failures(final long classId, final TestMethodResult methodResult, final FailureType failureType) { List failures = methodResult.getFailures(); + if (failures.isEmpty()) { + // This can happen with a failing engine. For now we just ignore this. + return Collections.emptyList(); + } final TestFailure firstFailure = failures.get(0); return Iterables.transform(failures, new Function() { @Override diff --git a/subprojects/testing-base/src/test/groovy/org/gradle/api/internal/tasks/testing/junit/result/JUnitXmlResultWriterSpec.groovy b/subprojects/testing-base/src/test/groovy/org/gradle/api/internal/tasks/testing/junit/result/JUnitXmlResultWriterSpec.groovy index ade0854a1e03..13b34b3b757b 100644 --- a/subprojects/testing-base/src/test/groovy/org/gradle/api/internal/tasks/testing/junit/result/JUnitXmlResultWriterSpec.groovy +++ b/subprojects/testing-base/src/test/groovy/org/gradle/api/internal/tasks/testing/junit/result/JUnitXmlResultWriterSpec.groovy @@ -181,6 +181,19 @@ class JUnitXmlResultWriterSpec extends Specification { """ } + def "can generate report with failed tests with no exception"() { + given: + TestClassResult result = new TestClassResult(1, "com.foo.FooTest", startTime) + result.add(new TestMethodResult(3, "some failing test", FAILURE, 10, startTime + 40)) + + when: + def xml = getXml(result) + then: + new JUnitTestClassExecutionResult(xml, "com.foo.FooTest", "com.foo.FooTest", TestResultOutputAssociation.WITH_SUITE) + .assertTestCount(1, 0, 1, 0) + .assertTestFailed("some failing test") + } + @Unroll @Issue("gradle/gradle#11445") def "writes #writtenName as class display name when #displayName is specified"() {