首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么JMockit的@Injectable不适用于所有相关字段?

为什么JMockit的@Injectable不适用于所有相关字段?
EN

Stack Overflow用户
提问于 2015-04-03 16:18:06
回答 1查看 444关注 0票数 1

在使用JUnit的JMockit测试中,我使用@Injectable注释来初始化通过Spring初始化的生产代码中的字段。

我在几个类中使用了一个类型的实现。为什么C不是作为IC的实现注入到A类型的模拟中,就像在下面提到的测试方法中的BD类型中注入的那样?

代码语言:javascript
运行
复制
@Service
@Scope("prototype")
public class A {
    @Autowired IC c;
    public IC getC() { return c; }

    // do something using C in the method body
    public void doSomething() {}
}

@Service
@Scope("prototype")
public class B {
    @Autowired IC c;
    public IC getC() { return c; }

    // do something using C in the method body
    public void doSomething() {}
}

public interface IC { void doSomething(); }

@Service
@Scope("prototype")
public class C implements IC {
    @Override
    public void doSomething() {}
}

@Service
public class D {
    @Autowired IC c;
    @Autowired B b;
    @Autowired A a;

    public IC getC() { return c; }
    public B getB() { return b; }
    public A getA() { return a; }
}

public class TestClass {
    @Tested(fullyInitialized = true) D d;
    @Injectable IC c;
    @Tested @Injectable A a;
    @Tested @Injectable B b;

    @Test
    public void test() {
        // expectations are recorded here
        assertNotNull(d.getC());
        assertNotNull(d.getB().getC());
        // Null reference 
        assertNotNull(d.getA().getC());
    }
}

编辑: @TestedC的用例已经添加到代码示例中。这个注释被用来将C注入到AB中,以便最终在它们的一些方法中使用它。

编辑2:是否允许对测试类中的多个字段使用@Tested来扩展所测试的单元?

EN

回答 1

Stack Overflow用户

发布于 2016-07-28 06:49:20

这个特性已经在jmockit 1.25中得到了修正。确保您使用的是最新版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29435856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档