如何使用Mockito在Spring中模拟autowired的@Value字段?

我使用Spring 3.1.4.RELEASE和Mockito 1.9.5。在我的Spring类中我有:

@Value("#{myProps['default.url']}")
private String defaultUrl;

@Value("#{myProps['default.password']}")
private String defaultrPassword;

// ...

从我的JUnit测试,我目前设置如此:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({ "classpath:test-context.xml" })
public class MyTest 
{ 

我想为我的“defaultUrl”字段嘲笑一个值。注意,我不想模拟其他字段的值 – 我想保留它们,只有“defaultUrl”字段。还要注意,我没有明确的“setter”方法(例如setDefaultUrl)在我的类,我不想创建任何只是为了测试的目的。

鉴于此,我如何模拟一个字段的值?

你可以使用Spring的ReflectionTestUtils.setField的魔法,以避免对你的代码进行任何修改。

查看this教程甚至更多的信息,虽然你可能不需要它,因为该方法是非常容易使用

更新

自从引入Spring 4.2.RC1以来,现在可以设置一个静态字段,而不必提供类的实例。请参见this部分文档和this提交。

http://stackoverflow.com/questions/23162777/how-do-i-mock-an-autowired-value-field-in-spring-with-mockito

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:如何使用Mockito在Spring中模拟autowired的@Value字段?