Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
a1e3dceb
Commit
a1e3dceb
authored
Aug 16, 2016
by
Andy Wilkinson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Polish “Improve documentation for testing with Spock”
Closes gh-6539
parent
894d86de
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
121 additions
and
28 deletions
+121
-28
spring-boot-features.adoc
spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc
+16
-28
SpockTestRestTemplateExample.java
...amework/boot/test/spock/SpockTestRestTemplateExample.java
+57
-0
SpockTestRestTemplateExampleTests.java
...rk/boot/test/spock/SpockTestRestTemplateExampleTests.java
+48
-0
No files found.
spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc
View file @
a1e3dceb
...
...
@@ -5369,42 +5369,30 @@ automatically generate the default snippets:
==== Using Spock to test Spring Boot applications
If you wish to use Spock to test a Spring Boot application you should add a dependency
on Spock's `spock-spring` module to your application's build. `spock-spring` integrates
Spring's test framework into Spock.
Spring's test framework into Spock. Exactly how you can use Spock to test a Spring Boot
application depends on the version of Spock that you are using.
NOTE: The annotations <<boot-features-testing-spring-boot-applications,described above>>
can be used with Spock 1.1, i.e. you can annotate your `Specification` with
NOTE: Spring Boot provides dependency management for Spock 1.0. If you wish to use Spock
1.1 you should <<howto.adoc#howto-customize-dependency-versions,override the
`spock.version` property>> in your `build.gradle` or `pom.xml` file.
When using Spock 1.1, the annotations <<boot-features-testing-spring-boot-applications,
described above>> can only be used and you can annotate your `Specification` with
`@SpringBootTest` to suit the needs of your tests.
When using Spock 1.0 @SpringbootTest will not work for a web project. You need to use
'@SpringApplicationConfiguration()' and '@WebIntegrationTest(randomPort = true)'
If you want to autowire a TestRestTemplate you will have to create a bean like:
When using Spock 1.0, `@SpringBootTest` will not work for a web project. You need to use
`@SpringApplicationConfiguration` and `@WebIntegrationTest(randomPort = true)`. Being
unable to use `@SpringBootTest` means that you also lose the auto-configured
`TestRestTemplate` bean. You can create an equivalent bean yourself using the following
configuration:
[source,java,indent=0]
----
public class TestConfiguration {
@Autowired
ApplicationContext applicationContext;
@Bean
TestRestTemplate restTemplate(){
RestTemplateBuilder builder = getRestTemplateBuilder(applicationContext);
TestRestTemplate template = new TestRestTemplate(builder.build());
template.setUriTemplateHandler(
new LocalHostUriTemplateHandler(applicationContext.getEnvironment()));
return template;
}
private RestTemplateBuilder getRestTemplateBuilder(
ApplicationContext applicationContext) {
try {
return applicationContext.getBean(RestTemplateBuilder.class);
}
catch (NoSuchBeanDefinitionException ex) {
return new RestTemplateBuilder();
}
include::{code-examples}/test/spock/SpockTestRestTemplateExample.java[tag=test-rest-template-configuration]
----
[[boot-features-test-utilities]]
=== Test utilities
A few test utility classes are packaged as part of `spring-boot` that are generally
...
...
spring-boot-docs/src/main/java/org/springframework/boot/test/spock/SpockTestRestTemplateExample.java
0 → 100644
View file @
a1e3dceb
/*
* Copyright 2012-2016 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org
.
springframework
.
boot
.
test
.
spock
;
import
org.springframework.beans.factory.ObjectProvider
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.boot.test.web.client.LocalHostUriTemplateHandler
;
import
org.springframework.boot.test.web.client.TestRestTemplate
;
import
org.springframework.boot.web.client.RestTemplateBuilder
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.core.env.Environment
;
/**
* Example configuration for using TestRestTemplate with Spock 1.0 when
* {@link SpringBootTest} cannot be used.
*
* @author Andy Wilkinson
*/
public
class
SpockTestRestTemplateExample
{
/**
* Test configuration for a {@link TestRestTemplate}.
*/
// tag::test-rest-template-configuration[]
@Configuration
static
class
TestRestTemplateConfiguration
{
@Bean
public
TestRestTemplate
testRestTemplate
(
ObjectProvider
<
RestTemplateBuilder
>
builderProvider
,
Environment
environment
)
{
RestTemplateBuilder
builder
=
builderProvider
.
getIfAvailable
();
TestRestTemplate
template
=
builder
==
null
?
new
TestRestTemplate
()
:
new
TestRestTemplate
(
builder
.
build
());
template
.
setUriTemplateHandler
(
new
LocalHostUriTemplateHandler
(
environment
));
return
template
;
}
}
// end::test-rest-template-configuration[]
}
spring-boot-docs/src/test/java/org/springframework/boot/test/spock/SpockTestRestTemplateExampleTests.java
0 → 100644
View file @
a1e3dceb
/*
* Copyright 2012-2016 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org
.
springframework
.
boot
.
test
.
spock
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.web.client.TestRestTemplate
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.test.context.ContextConfiguration
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
/**
* Tests for {@link SpockTestRestTemplateExample}.
*
* @author Andy Wilkinson
*/
@RunWith
(
SpringRunner
.
class
)
@ContextConfiguration
(
classes
=
SpockTestRestTemplateExample
.
TestRestTemplateConfiguration
.
class
)
public
class
SpockTestRestTemplateExampleTests
{
@Autowired
private
ApplicationContext
applicationContext
;
@Test
public
void
testRestTemplateBeanIsAvailable
()
{
assertThat
(
this
.
applicationContext
.
getBeansOfType
(
TestRestTemplate
.
class
))
.
hasSize
(
1
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment