Merge pull request #9534 from Danny Thomas
* gh-9534: Polish "Ensure SpringBootDITEL fails with the original failure" Ensure SpringBootDITEL fails with the original failure
This commit is contained in:
commit
feb964b559
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2012-2016 the original author or authors.
|
* Copyright 2012-2017 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
|
@ -44,13 +44,22 @@ public class SpringBootDependencyInjectionTestExecutionListener
|
||||||
super.prepareTestInstance(testContext);
|
super.prepareTestInstance(testContext);
|
||||||
}
|
}
|
||||||
catch (Exception ex) {
|
catch (Exception ex) {
|
||||||
|
outputConditionEvaluationReport(testContext);
|
||||||
|
throw ex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void outputConditionEvaluationReport(TestContext testContext) {
|
||||||
|
try {
|
||||||
ApplicationContext context = testContext.getApplicationContext();
|
ApplicationContext context = testContext.getApplicationContext();
|
||||||
if (context instanceof ConfigurableApplicationContext) {
|
if (context instanceof ConfigurableApplicationContext) {
|
||||||
ConditionEvaluationReport report = ConditionEvaluationReport
|
ConditionEvaluationReport report = ConditionEvaluationReport
|
||||||
.get(((ConfigurableApplicationContext) context).getBeanFactory());
|
.get(((ConfigurableApplicationContext) context).getBeanFactory());
|
||||||
System.err.println(new ConditionEvaluationReportMessage(report));
|
System.err.println(new ConditionEvaluationReportMessage(report));
|
||||||
}
|
}
|
||||||
throw ex;
|
}
|
||||||
|
catch (Exception ex) {
|
||||||
|
// Allow original failure to be reported
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ package org.springframework.boot.test.autoconfigure;
|
||||||
|
|
||||||
import org.junit.Rule;
|
import org.junit.Rule;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
import org.junit.rules.ExpectedException;
|
||||||
|
|
||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
|
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
|
||||||
|
|
@ -30,6 +31,7 @@ import org.springframework.test.context.TestContext;
|
||||||
import org.springframework.test.context.support.DependencyInjectionTestExecutionListener;
|
import org.springframework.test.context.support.DependencyInjectionTestExecutionListener;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.hamcrest.CoreMatchers.is;
|
||||||
import static org.hamcrest.Matchers.containsString;
|
import static org.hamcrest.Matchers.containsString;
|
||||||
import static org.mockito.BDDMockito.given;
|
import static org.mockito.BDDMockito.given;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
@ -44,6 +46,9 @@ public class SpringBootDependencyInjectionTestExecutionListenerTests {
|
||||||
@Rule
|
@Rule
|
||||||
public OutputCapture out = new OutputCapture();
|
public OutputCapture out = new OutputCapture();
|
||||||
|
|
||||||
|
@Rule
|
||||||
|
public ExpectedException thrown = ExpectedException.none();
|
||||||
|
|
||||||
private SpringBootDependencyInjectionTestExecutionListener reportListener = new SpringBootDependencyInjectionTestExecutionListener();
|
private SpringBootDependencyInjectionTestExecutionListener reportListener = new SpringBootDependencyInjectionTestExecutionListener();
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
@ -73,6 +78,18 @@ public class SpringBootDependencyInjectionTestExecutionListenerTests {
|
||||||
this.out.expect(containsString("Negative matches"));
|
this.out.expect(containsString("Negative matches"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void originalFailureIsThrownWhenReportGenerationFails() throws Exception {
|
||||||
|
TestContext testContext = mock(TestContext.class);
|
||||||
|
IllegalStateException originalFailure = new IllegalStateException();
|
||||||
|
given(testContext.getTestInstance()).willThrow(originalFailure);
|
||||||
|
SpringApplication application = new SpringApplication(Config.class);
|
||||||
|
application.setWebEnvironment(false);
|
||||||
|
given(testContext.getApplicationContext()).willThrow(new RuntimeException());
|
||||||
|
this.thrown.expect(is(originalFailure));
|
||||||
|
this.reportListener.prepareTestInstance(testContext);
|
||||||
|
}
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
@ImportAutoConfiguration(JacksonAutoConfiguration.class)
|
@ImportAutoConfiguration(JacksonAutoConfiguration.class)
|
||||||
static class Config {
|
static class Config {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue