Java 为Spring单元测试注入mock@Service

Java 为Spring单元测试注入mock@Service,java,unit-testing,spring,spring-mvc,mockito,Java,Unit Testing,Spring,Spring Mvc,Mockito,我正在测试一个使用use@Autowired注入服务的类: public class RuleIdValidator implements ConstraintValidator<ValidRuleId, String> { @Autowired private RuleStore ruleStore; // Some other methods } 公共类RuleIdValidator实现ConstraintValidator{ @自动连线 私有规则库

我正在测试一个使用use@Autowired注入服务的类:

public class RuleIdValidator implements ConstraintValidator<ValidRuleId, String> {

    @Autowired
    private RuleStore ruleStore;

    // Some other methods
}
公共类RuleIdValidator实现ConstraintValidator{
@自动连线
私有规则库规则库;
//其他一些方法
}
但在测试期间如何模拟规则存储?我不知道如何将模拟规则库注入Spring和自动布线系统


谢谢

您可以使用类似Mockito的东西来模拟测试期间返回的规则存储。Stackoverflow post提供了一个很好的例子:

使用以下工具非常简单:

在Mockito javadoc或我不久前写的关于这个主题的文章中阅读更多

从Mockito 1.8.3开始提供,在1.9.0中增强。

您可以执行以下操作:

package com.mycompany;    

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.DependsOn;
import org.springframework.stereotype.Component;

@Component
@DependsOn("ruleStore")
public class RuleIdValidator implements ConstraintValidator<ValidRuleId, String> {

    @Autowired
    private RuleStore ruleStore;

    // Some other methods
}
package.com.mycompany;
导入org.springframework.beans.factory.annotation.Autowired;
导入org.springframework.context.annotation.DependsOn;
导入org.springframework.stereotype.Component;
@组成部分
@DependsOn(“规则存储”)
公共类RuleIdValidator实现ConstraintValidator{
@自动连线
私有规则库规则库;
//其他一些方法
}
您的Spring上下文应该如下所示:

<context:component-scan base-package="com.mycompany" />

<bean id="ruleStore" class="org.easymock.EasyMock" factory-method="createMock">
    <constructor-arg index="0" value="com.mycompany.RuleStore"/>
</bean>

谢谢,我错过了那个。ReflectionTestUtils.setField(验证器,“规则存储”,规则存储);
<context:component-scan base-package="com.mycompany" />

<bean id="ruleStore" class="org.easymock.EasyMock" factory-method="createMock">
    <constructor-arg index="0" value="com.mycompany.RuleStore"/>
</bean>