我试图找出一种以下列方式验证类构造函数的方法(请记住这是一个理论示例)
public MyClass extends ItemContainer {
public MyClass(RoundItem a, SquareItem b) {
addItem(a);
addItem(b);
}
}
我想验证构造函数是否使用任何(RoundItem.class)和任何(SquareItem.class)调用addItem一次。我似乎找不到用PowerMock或Mockito以这种方式验证构造函数的好方法。有什么想法吗?
答案 0 :(得分:2)
首先,您应该注意将任何逻辑放入构造函数中。 (为了不测试它们。项目a
和b
可以通过客户端代码放入容器中(您实际上可以使用模拟框架来测试它,但是有更简单的方法来执行它)。
考虑检查一下有关测试的Misko Hevery's讲座,以获得足够的背景来正确进行单元测试。
答案 1 :(得分:2)
你真的不需要一个模拟框架来测试它。您可以制作Test Spy对象。
例如:
@Test
public void testMyClassConstruction() throws Exception {
MyClass myClass = new MyClass() {
public int size() {
return items.size();
}
}
assertEquals(2, myClass.size());
}
答案 2 :(得分:0)
Mockite纯粹用于模拟目的,如果你想测试其他东西我建议你看一下JUnit。它是Java最好的测试框架之一。 否则,您可以始终只在构造函数中使用System.out.print来查看它被调用的次数。
答案 3 :(得分:0)
new Verifications() {
{
addItem(a); times=1;
addItem(b); times=1;
}
};
这样你就可以测试调用方法是否存在。在这里你可以模拟对象" a" &安培; " B"
或者您可以使用" withInsatceLike"
例如:
addItem(withInsatceLike(a));
希望这有帮助