【发布时间】:2016-01-02 12:04:28
【问题描述】:
我想为以下类编写单元测试:
public class Target() {
private final Member member = new Member();
public Target() {
}
}
我想用 Member 的模拟实例来初始化这个 Target 类,因为在测试期间实例化 Member 是不可行的。任何框架都可以做到这一点吗?
编辑:
我不想模拟 Target 类。我打算在初始化时模拟 Member 类。
Object method() {
member.differentMethod();
//Logic which I want to test
}
请建议如何模拟这个对成员类方法的调用。
【问题讨论】:
-
是的,你的 easymock/mocito/powermock 框架。但是您只是对模拟框架感兴趣还是想测试 Target 类本身?
-
我希望测试 Target 类。但是,每当我尝试初始化 Target() 时,我都会收到一个错误,因为它在内部调用 Member(),这需要设置我想要避免的资源负载。我知道如何使用带参数的构造函数来初始化带有模拟对象的类。但我不知道在这种情况下如何做到这一点。
-
没有意义但模拟目标类,你将如何测试目标类本身?
-
有些误会。我不想模拟 Target 类,而是其中的 Member 类。更新了描述。
-
不使用这种隐式依赖和紧密绑定,而是将 Member 对象作为参数传递给构造函数(构造函数注入)。这样你就可以在你的单元测试中通过一个模拟的成员。
标签: java unit-testing testing mocking mockito