Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为测试注入不同的实现_Java_Spring_Testing_Dependency Injection - Fatal编程技术网

Java 为测试注入不同的实现

Java 为测试注入不同的实现,java,spring,testing,dependency-injection,Java,Spring,Testing,Dependency Injection,我有以下课程: public interface Emailer {} @Named public class RealEmailer implements Emailer {} @Named public class NoOpEmailer implements Emailer {} 我的服务类使用的是真正的emailer: public class SomeService { @Inject private Emailer emailer; } 问题是,在我的

我有以下课程:

public interface Emailer {}

@Named    
public class RealEmailer implements Emailer {}

@Named
public class NoOpEmailer implements Emailer {}
我的服务类使用的是真正的emailer:

public class SomeService {
    @Inject
    private Emailer emailer;
}

问题是,在我的服务测试类(
SomeServiceTest
)中,如何在服务中注入
Emailer
,以使用
NoOpEmailer
?我将Spring用于DI框架。

您是否考虑过将字段包作用域设置为私有而非私有的可能性,因为这将使在单元测试期间设置此字段变得更加简单(假设您的测试类与主题位于同一个包中)


如果没有,Spring似乎可以这样做,您可以使用它将此值注入类中

您是否考虑过将字段包范围设置为私有而不是私有的可能性,因为这将使在单元测试期间设置此字段变得简单得多(假设您的测试类与主题位于同一个包中)


如果没有,那么Spring似乎就是这样做的,如果可以使用Spring 3.1,您可以使用Spring将该值注入到类中。这将允许您提供同一bean的两种不同实现(Emailer和NoOpEmailer)。然后在您的测试中,您可以使用@Profile(“test”)注释来激活测试配置文件,并且您的no-op bean将被注入。

如果您可以使用Spring 3.1,您可以使用。这将允许您提供同一bean的两种不同实现(Emailer和NoOpEmailer)。然后在您的测试中,您可以使用@Profile(“test”)注释来激活测试概要文件,您的no-op bean将被注入。

您希望使用什么依赖注入框架?用GUICE做它不同于Spring,不同于…对不起,我用的是Spring。我应该把它放在问题里。但是它被标记为
spring
。您想使用什么依赖注入框架?用GUICE做它不同于Spring,不同于…对不起,我用的是Spring。我应该把它放在问题里。但它的标签是
spring