Java测试验证构造函数

时间:2012-05-15 14:47:04

标签: java junit mocking mockito powermock

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

public MyClass extends ItemContainer {

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

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

4 个答案:

答案 0 :(得分:2)

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

考虑检查一下有关测试的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));

希望这有帮助

相关问题