0

我正在调用我Component.getInstance(Needed.class)的一个类的构造函数,它不是接缝组件。这很好用,但我试图用单元测试来覆盖它,而我得到的是IllegalStateException上面的代码。有没有办法用测试覆盖 Component.getInstance ?

顺便说一句,我正在使用 unitils 库...在此先感谢

4

1 回答 1

1

您在类中使用服务定位器模式,它不适合单元测试。尝试转向依赖注入模式。这使得单元测试更加容易。

服务定位器示例:

public class MyService : Service
{
    private Needed dependency;

    public MyService()
    {
        this.dependency = 
            Component.getInstance(Needed.class);
    }
}

依赖注入示例:

public class MyService : Service
{
    private Needed dependency;

    public MyService(Needed dependency)
    {
        this.dependency = dependency;
    }
}

在进行依赖注入时,您的类将不会引用容器(Component在您的情况下),这使得对类进行单元测试变得更加容易。

于 2011-03-11T10:11:25.510 回答