Skip to content

Commit 5d60d6b

Browse files
committed
Use ApplicationContextRunner to test RestTemplateAutoConfiguration
1 parent 7dd6507 commit 5d60d6b

File tree

1 file changed

+57
-53
lines changed

1 file changed

+57
-53
lines changed

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/client/RestTemplateAutoConfigurationTests.java

Lines changed: 57 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2018 the original author or authors.
2+
* Copyright 2012-2019 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -16,17 +16,16 @@
1616

1717
package org.springframework.boot.autoconfigure.web.client;
1818

19-
import java.util.ArrayList;
2019
import java.util.List;
2120

22-
import org.junit.After;
2321
import org.junit.Test;
2422

23+
import org.springframework.boot.autoconfigure.AutoConfigurations;
2524
import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
2625
import org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration;
26+
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
2727
import org.springframework.boot.web.client.RestTemplateBuilder;
2828
import org.springframework.boot.web.client.RestTemplateCustomizer;
29-
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
3029
import org.springframework.context.annotation.Bean;
3130
import org.springframework.context.annotation.Configuration;
3231
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
@@ -46,78 +45,83 @@
4645
*/
4746
public class RestTemplateAutoConfigurationTests {
4847

49-
private AnnotationConfigApplicationContext context;
50-
51-
@After
52-
public void close() {
53-
if (this.context != null) {
54-
this.context.close();
55-
}
56-
}
48+
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
49+
.withConfiguration(
50+
AutoConfigurations.of(RestTemplateAutoConfiguration.class));
5751

5852
@Test
5953
public void restTemplateWhenMessageConvertersDefinedShouldHaveMessageConverters() {
60-
load(HttpMessageConvertersAutoConfiguration.class, RestTemplateConfig.class);
61-
assertThat(this.context.getBeansOfType(RestTemplate.class)).hasSize(1);
62-
RestTemplate restTemplate = this.context.getBean(RestTemplate.class);
63-
List<HttpMessageConverter<?>> converters = this.context
64-
.getBean(HttpMessageConverters.class).getConverters();
65-
assertThat(restTemplate.getMessageConverters())
66-
.containsExactlyElementsOf(converters);
67-
assertThat(restTemplate.getRequestFactory())
68-
.isInstanceOf(HttpComponentsClientHttpRequestFactory.class);
54+
this.contextRunner
55+
.withConfiguration(AutoConfigurations
56+
.of(HttpMessageConvertersAutoConfiguration.class))
57+
.withUserConfiguration(RestTemplateConfig.class).run((context) -> {
58+
assertThat(context).hasSingleBean(RestTemplate.class);
59+
RestTemplate restTemplate = context.getBean(RestTemplate.class);
60+
List<HttpMessageConverter<?>> converters = context
61+
.getBean(HttpMessageConverters.class).getConverters();
62+
assertThat(restTemplate.getMessageConverters())
63+
.containsExactlyElementsOf(converters);
64+
assertThat(restTemplate.getRequestFactory())
65+
.isInstanceOf(HttpComponentsClientHttpRequestFactory.class);
66+
});
6967
}
7068

7169
@Test
7270
public void restTemplateWhenNoMessageConvertersDefinedShouldHaveDefaultMessageConverters() {
73-
load(RestTemplateConfig.class);
74-
RestTemplate restTemplate = this.context.getBean(RestTemplate.class);
75-
assertThat(restTemplate.getMessageConverters().size())
76-
.isEqualTo(new RestTemplate().getMessageConverters().size());
71+
this.contextRunner.withUserConfiguration(RestTemplateConfig.class)
72+
.run((context) -> {
73+
assertThat(context).hasSingleBean(RestTemplate.class);
74+
RestTemplate restTemplate = context.getBean(RestTemplate.class);
75+
assertThat(restTemplate.getMessageConverters().size())
76+
.isEqualTo(new RestTemplate().getMessageConverters().size());
77+
});
7778
}
7879

7980
@Test
81+
@SuppressWarnings({ "unchecked", "rawtypes" })
8082
public void restTemplateWhenHasCustomMessageConvertersShouldHaveMessageConverters() {
81-
load(CustomHttpMessageConverter.class,
82-
HttpMessageConvertersAutoConfiguration.class, RestTemplateConfig.class);
83-
RestTemplate restTemplate = this.context.getBean(RestTemplate.class);
84-
List<Class<?>> converterClasses = new ArrayList<>();
85-
for (HttpMessageConverter<?> converter : restTemplate.getMessageConverters()) {
86-
converterClasses.add(converter.getClass());
87-
}
88-
assertThat(converterClasses).contains(CustomHttpMessageConverter.class);
83+
this.contextRunner
84+
.withConfiguration(AutoConfigurations
85+
.of(HttpMessageConvertersAutoConfiguration.class))
86+
.withUserConfiguration(CustomHttpMessageConverter.class,
87+
RestTemplateConfig.class)
88+
.run((context) -> {
89+
assertThat(context).hasSingleBean(RestTemplate.class);
90+
RestTemplate restTemplate = context.getBean(RestTemplate.class);
91+
assertThat(restTemplate.getMessageConverters())
92+
.extracting(HttpMessageConverter::getClass)
93+
.contains((Class) CustomHttpMessageConverter.class);
94+
});
8995
}
9096

9197
@Test
9298
public void restTemplateWhenHasCustomBuilderShouldUseCustomBuilder() {
93-
load(RestTemplateConfig.class, CustomRestTemplateBuilderConfig.class);
94-
assertThat(this.context.getBeansOfType(RestTemplate.class)).hasSize(1);
95-
RestTemplate restTemplate = this.context.getBean(RestTemplate.class);
96-
assertThat(restTemplate.getMessageConverters()).hasSize(1);
97-
assertThat(restTemplate.getMessageConverters().get(0))
98-
.isInstanceOf(CustomHttpMessageConverter.class);
99+
this.contextRunner.withUserConfiguration(RestTemplateConfig.class,
100+
CustomRestTemplateBuilderConfig.class).run((context) -> {
101+
assertThat(context).hasSingleBean(RestTemplate.class);
102+
RestTemplate restTemplate = context.getBean(RestTemplate.class);
103+
assertThat(restTemplate.getMessageConverters()).hasSize(1);
104+
assertThat(restTemplate.getMessageConverters().get(0))
105+
.isInstanceOf(CustomHttpMessageConverter.class);
106+
});
99107
}
100108

101109
@Test
102110
public void restTemplateShouldApplyCustomizer() {
103-
load(RestTemplateCustomizerConfig.class, RestTemplateConfig.class);
104-
RestTemplate restTemplate = this.context.getBean(RestTemplate.class);
105-
RestTemplateCustomizer customizer = this.context
106-
.getBean(RestTemplateCustomizer.class);
107-
verify(customizer).customize(restTemplate);
111+
this.contextRunner.withUserConfiguration(RestTemplateConfig.class,
112+
RestTemplateCustomizerConfig.class).run((context) -> {
113+
assertThat(context).hasSingleBean(RestTemplate.class);
114+
RestTemplate restTemplate = context.getBean(RestTemplate.class);
115+
RestTemplateCustomizer customizer = context
116+
.getBean(RestTemplateCustomizer.class);
117+
verify(customizer).customize(restTemplate);
118+
});
108119
}
109120

110121
@Test
111122
public void builderShouldBeFreshForEachUse() {
112-
load(DirtyRestTemplateConfig.class);
113-
}
114-
115-
public void load(Class<?>... config) {
116-
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
117-
ctx.register(config);
118-
ctx.register(RestTemplateAutoConfiguration.class);
119-
ctx.refresh();
120-
this.context = ctx;
123+
this.contextRunner.withUserConfiguration(DirtyRestTemplateConfig.class)
124+
.run((context) -> assertThat(context).hasNotFailed());
121125
}
122126

123127
@Configuration

0 commit comments

Comments
 (0)