java – Spring @Value注释不能与mockito mock一起使用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Spring @Value注释不能与mockito mock一起使用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2767字,纯文字阅读大概需要4分钟。
内容图文
![java – Spring @Value注释不能与mockito mock一起使用](/upload/InfoBanner/zyjiaocheng/733/fde6a2b82f264d54b4785ed9c7bcce2b.jpg)
我正在使用spring @Value注释并为A类中的某些字段设置值.
我正在为这个A类编写单元测试.在测试课中,我用Mockito @Spy注释了A类的参考.我将值设置为系统属性,然后调用MockitoAnnotations.initMocks(this).
我的期望是,间谍对象将通过@Value注释使用系统属性中的值初始化字段.但这不会发生.
请有人解释一下吗?
解决方法:
我有一个类似的测试,我使用以下相关代码:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="/context.xml")
public class ContextTest {
private boolean started = false;
@Spy
@Autowired
private Baz baz;
@Before
public void before() {
if (!started) {
MockitoAnnotations.initMocks(this);
started = true;
}
}
@Test
public void spy() {
Assert.assertEquals("value", baz.getProperty());
Mockito.verify(baz).getProperty();
}
}
基本上它会让spring处理测试注释(由于SpringJUnitRunner),然后让Mockito处理它们(显式调用MockitoAnnotations.initMocks(instanceOfTestClass)).
其他文件有完整的测试
简单的Baz.java春季课:
package foo.bar;
import org.springframework.beans.factory.annotation.Value;
public class Baz {
@Value("${property:test}")
private String property;
public String getProperty() {
return property;
}
public void setProperty(String property) {
this.property = property;
}
}
context.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>my.properties</value>
</property>
</bean>
<bean id="baz" class="foo.bar.Baz" />
</beans>
my.property文件:
property=value
和maven(pom.xml)文件:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>spring-test</groupId>
<artifactId>my.spring.test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>3.2.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>3.2.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.2.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.9.5</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
文件结构是:
+ spring-test
- pom.xml
+ src/main/java
+ foo.bar
- Baz.java
+ src/main/resources
- context.xml
- my.properties
+ src/test/java
+ foo.bar
- ContextTest.java
内容总结
以上是互联网集市为您收集整理的java – Spring @Value注释不能与mockito mock一起使用全部内容,希望文章能够帮你解决java – Spring @Value注释不能与mockito mock一起使用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。