2

我试图找出一种方法来通过以下方式验证类构造函数(请记住,这是一个理论示例)

public MyClass extends ItemContainer {

   public MyClass(RoundItem a, SquareItem b) {
      addItem(a);
      addItem(b); 
   }
}

我想验证构造函数调用 addItem 一次与 any(RoundItem.class) 并一次与 any(SquareItem.class)。我似乎找不到用 PowerMock 或 Mockito 以这种方式验证构造函数的好方法。有任何想法吗?

4

4 回答 4

2

你真的不需要一个模拟框架来测试它。您可以制作Test Spy对象。

例如 :

@Test
public void testMyClassConstruction() throws Exception {
  MyClass myClass = new MyClass() {
    public int size() {
      return items.size();
    }
  }

  assertEquals(2, myClass.size());
}
于 2012-05-15T15:18:02.557 回答
2

首先,您应该注意不要将任何逻辑放入构造函数中。(为了不测试它们。项目ab可能由客户端代码放入容器中(您实际上可以使用模拟框架来测试它,但有更简单的方法来做到这一点)。

考虑查看Misko Hevery 的一组关于测试的讲座,以获得足够的背景来正确进行单元测试。

于 2012-05-15T14:50:21.820 回答
0
new Verifications() {
           {        
            addItem(a); times=1;
            addItem(b); times=1;
            }
        };

这样您就可以测试是否调用了方法。在此您可以模拟对象“a”和“b”

或者你可以使用“withInsatceLike”

前任:

 addItem(withInsatceLike(a));

希望这可以帮助

于 2014-08-17T20:03:04.307 回答
0

Mockite 纯粹用于 Mocking 目的,如果您想测试其他东西,我建议您看看 JUnit。它是 Java 最好的测试框架之一。否则,您总是可以在构造函数中只使用 System.out.print 来找出它被调用的次数。

于 2012-05-15T14:52:35.987 回答