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
8318177b
Commit
8318177b
authored
Feb 21, 2017
by
Andy Wilkinson
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '1.4.x' into 1.5.x
parents
67810abd
70e802fb
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
83 additions
and
14 deletions
+83
-14
MockitoPostProcessor.java
...ramework/boot/test/mock/mockito/MockitoPostProcessor.java
+15
-11
SpyBeanOnTestFieldForMultipleExistingBeansWithOnePrimaryIntegrationTests.java
...rMultipleExistingBeansWithOnePrimaryIntegrationTests.java
+4
-3
SpyBeanWithNameOnTestFieldForMultipleExistingBeansTests.java
...BeanWithNameOnTestFieldForMultipleExistingBeansTests.java
+64
-0
No files found.
spring-boot-test/src/main/java/org/springframework/boot/test/mock/mockito/MockitoPostProcessor.java
View file @
8318177b
/*
* Copyright 2012-201
6
the original author or authors.
* Copyright 2012-201
7
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.
...
...
@@ -37,7 +37,6 @@ import org.springframework.beans.factory.BeanFactory;
import
org.springframework.beans.factory.BeanFactoryAware
;
import
org.springframework.beans.factory.BeanFactoryUtils
;
import
org.springframework.beans.factory.FactoryBean
;
import
org.springframework.beans.factory.NoSuchBeanDefinitionException
;
import
org.springframework.beans.factory.NoUniqueBeanDefinitionException
;
import
org.springframework.beans.factory.config.BeanDefinition
;
import
org.springframework.beans.factory.config.BeanFactoryPostProcessor
;
...
...
@@ -311,16 +310,9 @@ public class MockitoPostProcessor extends InstantiationAwareBeanPostProcessorAda
private
void
registerSpies
(
BeanDefinitionRegistry
registry
,
SpyDefinition
definition
,
Field
field
,
String
[]
existingBeans
)
{
ResolvableType
type
=
definition
.
getTypeToSpy
();
try
{
if
(
ObjectUtils
.
isEmpty
(
existingBeans
))
{
throw
new
NoSuchBeanDefinitionException
(
type
);
}
if
(
existingBeans
.
length
>
1
)
{
existingBeans
=
new
String
[]
{
determinePrimaryCandidate
(
registry
,
existingBeans
,
type
)
};
}
registerSpy
(
definition
,
field
,
existingBeans
[
0
]);
registerSpy
(
definition
,
field
,
determineBeanName
(
existingBeans
,
definition
,
registry
));
}
catch
(
RuntimeException
ex
)
{
throw
new
IllegalStateException
(
...
...
@@ -328,6 +320,18 @@ public class MockitoPostProcessor extends InstantiationAwareBeanPostProcessorAda
}
}
private
String
determineBeanName
(
String
[]
existingBeans
,
SpyDefinition
definition
,
BeanDefinitionRegistry
registry
)
{
if
(
StringUtils
.
hasText
(
definition
.
getName
()))
{
return
definition
.
getName
();
}
if
(
existingBeans
.
length
==
1
)
{
return
existingBeans
[
0
];
}
return
determinePrimaryCandidate
(
registry
,
existingBeans
,
definition
.
getTypeToSpy
());
}
private
String
determinePrimaryCandidate
(
BeanDefinitionRegistry
registry
,
String
[]
candidateBeanNames
,
ResolvableType
type
)
{
String
primaryBeanName
=
null
;
...
...
spring-boot-test/src/test/java/org/springframework/boot/test/mock/mockito/SpyBeanOnTestFieldForMultipleExistingBeansIntegrationTests.java
→
spring-boot-test/src/test/java/org/springframework/boot/test/mock/mockito/SpyBeanOnTestFieldForMultipleExistingBeans
WithOnePrimary
IntegrationTests.java
View file @
8318177b
/*
* Copyright 2012-201
6
the original author or authors.
* Copyright 2012-201
7
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.
...
...
@@ -33,12 +33,13 @@ import static org.assertj.core.api.Assertions.assertThat;
import
static
org
.
mockito
.
Mockito
.
verify
;
/**
* Test {@link SpyBean} on a test class field can be used to inject new spy instances.
* Test {@link SpyBean} on a test class field can be used to inject a spy instance when
* there are multiple candidates and one is primary.
*
* @author Phillip Webb
*/
@RunWith
(
SpringRunner
.
class
)
public
class
SpyBeanOnTestFieldForMultipleExistingBeansIntegrationTests
{
public
class
SpyBeanOnTestFieldForMultipleExistingBeans
WithOnePrimary
IntegrationTests
{
@SpyBean
private
SimpleExampleStringGenericService
spy
;
...
...
spring-boot-test/src/test/java/org/springframework/boot/test/mock/mockito/SpyBeanWithNameOnTestFieldForMultipleExistingBeansTests.java
0 → 100644
View file @
8318177b
/*
* Copyright 2012-2017 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
.
mock
.
mockito
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.mockito.internal.util.MockUtil
;
import
org.springframework.boot.test.mock.mockito.example.SimpleExampleStringGenericService
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
/**
* Test {@link SpyBean} on a test class field can be used to inject a spy instance when
* there are multiple candidates and one is chosen using the name attribute.
*
* @author Phillip Webb
* @author Andy Wilkinson
*/
@RunWith
(
SpringRunner
.
class
)
public
class
SpyBeanWithNameOnTestFieldForMultipleExistingBeansTests
{
@SpyBean
(
name
=
"two"
)
private
SimpleExampleStringGenericService
spy
;
@Test
public
void
testSpying
()
throws
Exception
{
assertThat
(
new
MockUtil
().
isSpy
(
this
.
spy
)).
isTrue
();
assertThat
(
new
MockUtil
().
getMockName
(
this
.
spy
).
toString
()).
isEqualTo
(
"two"
);
}
@Configuration
static
class
Config
{
@Bean
public
SimpleExampleStringGenericService
one
()
{
return
new
SimpleExampleStringGenericService
(
"one"
);
}
@Bean
public
SimpleExampleStringGenericService
two
()
{
return
new
SimpleExampleStringGenericService
(
"two"
);
}
}
}
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