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
dc237043
Commit
dc237043
authored
Nov 22, 2016
by
Phillip Webb
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '1.4.x' into 1.5.x
parents
88c84ce2
74670cb2
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
112 additions
and
2 deletions
+112
-2
spring-boot-features.adoc
spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc
+5
-0
WebDriverScope.java
...k/boot/test/autoconfigure/web/servlet/WebDriverScope.java
+7
-2
WebMvcTestWebDriverCustomScopeIntegrationTests.java
...rvlet/WebMvcTestWebDriverCustomScopeIntegrationTests.java
+100
-0
No files found.
spring-boot-docs/src/main/asciidoc/spring-boot-features.adoc
View file @
dc237043
...
@@ -5270,6 +5270,11 @@ and/or a `WebDriver` bean. Here is an example that uses HtmlUnit:
...
@@ -5270,6 +5270,11 @@ and/or a `WebDriver` bean. Here is an example that uses HtmlUnit:
}
}
----
----
NOTE: By default Spring Boot will put `WebDriver` beans in a special "`scope`" to ensure
that the driver is quit after each test, and that a new instance is injected. If you don't
want this behavor you can add `@Scope("singleton")` to your `WebDriver` `@Bean`
definition.
A list of the auto-configuration that is enabled by `@WebMvcTest` can be
A list of the auto-configuration that is enabled by `@WebMvcTest` can be
<<appendix-test-auto-configuration#test-auto-configuration,found in the appendix>>.
<<appendix-test-auto-configuration#test-auto-configuration,found in the appendix>>.
...
...
spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/servlet/WebDriverScope.java
View file @
dc237043
...
@@ -23,12 +23,14 @@ import org.openqa.selenium.WebDriver;
...
@@ -23,12 +23,14 @@ import org.openqa.selenium.WebDriver;
import
org.springframework.beans.BeansException
;
import
org.springframework.beans.BeansException
;
import
org.springframework.beans.factory.ObjectFactory
;
import
org.springframework.beans.factory.ObjectFactory
;
import
org.springframework.beans.factory.config.BeanDefinition
;
import
org.springframework.beans.factory.config.BeanFactoryPostProcessor
;
import
org.springframework.beans.factory.config.BeanFactoryPostProcessor
;
import
org.springframework.beans.factory.config.ConfigurableListableBeanFactory
;
import
org.springframework.beans.factory.config.ConfigurableListableBeanFactory
;
import
org.springframework.beans.factory.config.Scope
;
import
org.springframework.beans.factory.config.Scope
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.ConfigurableApplicationContext
;
import
org.springframework.context.ConfigurableApplicationContext
;
import
org.springframework.util.ClassUtils
;
import
org.springframework.util.ClassUtils
;
import
org.springframework.util.StringUtils
;
/**
/**
* A special scope used for {@link WebDriver} beans. Usually registered by a
* A special scope used for {@link WebDriver} beans. Usually registered by a
...
@@ -122,8 +124,11 @@ class WebDriverScope implements Scope {
...
@@ -122,8 +124,11 @@ class WebDriverScope implements Scope {
for
(
String
beanClass
:
BEAN_CLASSES
)
{
for
(
String
beanClass
:
BEAN_CLASSES
)
{
for
(
String
beanName
:
beanFactory
.
getBeanNamesForType
(
for
(
String
beanName
:
beanFactory
.
getBeanNamesForType
(
ClassUtils
.
resolveClassName
(
beanClass
,
null
)))
{
ClassUtils
.
resolveClassName
(
beanClass
,
null
)))
{
beanFactory
.
getBeanDefinition
(
beanName
).
setScope
(
NAME
);
BeanDefinition
definition
=
beanFactory
.
getBeanDefinition
(
beanName
);
if
(!
StringUtils
.
hasLength
(
definition
.
getScope
()))
{
definition
.
setScope
(
NAME
);
}
}
}
}
}
}
}
...
...
spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/servlet/WebMvcTestWebDriverCustomScopeIntegrationTests.java
0 → 100644
View file @
dc237043
/*
* 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
.
autoconfigure
.
web
.
servlet
;
import
org.junit.FixMethodOrder
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.junit.runners.MethodSorters
;
import
org.openqa.selenium.WebDriver
;
import
org.openqa.selenium.htmlunit.HtmlUnitDriver
;
import
org.springframework.beans.factory.FactoryBean
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Scope
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
org.springframework.test.web.servlet.MockMvc
;
import
org.springframework.test.web.servlet.htmlunit.webdriver.MockMvcHtmlUnitDriverBuilder
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
/**
* Tests for {@link WebMvcTest} with {@link WebDriver} in a custom scope.
*
* @author Phillip Webb
*/
@RunWith
(
SpringRunner
.
class
)
@WebMvcTest
(
secure
=
false
)
@FixMethodOrder
(
MethodSorters
.
NAME_ASCENDING
)
public
class
WebMvcTestWebDriverCustomScopeIntegrationTests
{
// gh-7454
private
static
WebDriver
previousWebDriver
;
@Autowired
private
WebDriver
webDriver
;
@Test
public
void
shouldAutoConfigureWebClient
()
throws
Exception
{
WebMvcTestWebDriverCustomScopeIntegrationTests
.
previousWebDriver
=
this
.
webDriver
;
}
@Test
public
void
shouldBeADifferentWebClient
()
throws
Exception
{
assertThat
(
previousWebDriver
).
isNotNull
().
isSameAs
(
this
.
webDriver
);
}
@Configuration
static
class
Config
{
@Bean
@Scope
(
"singleton"
)
public
WebDriverFactory
webDriver
(
MockMvc
mockMvc
)
{
return
new
WebDriverFactory
(
mockMvc
);
}
}
static
class
WebDriverFactory
implements
FactoryBean
<
WebDriver
>
{
private
final
HtmlUnitDriver
driver
;
WebDriverFactory
(
MockMvc
mockMvc
)
{
this
.
driver
=
MockMvcHtmlUnitDriverBuilder
.
mockMvcSetup
(
mockMvc
).
build
();
}
@Override
public
boolean
isSingleton
()
{
return
true
;
}
@Override
public
Class
<?>
getObjectType
()
{
return
WebDriver
.
class
;
}
@Override
public
WebDriver
getObject
()
throws
Exception
{
return
this
.
driver
;
}
}
}
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