如何测试new运算符创建对象时传递的参数

时间:2015-08-25 21:13:12

标签: java unit-testing testing junit mocking

我想测试构造函数中传递的参数,例如:

class A {
  public void function (String arg1, String arg2) {
    C c = new C(arg1, arg2);
    //....
  }
}

在此,我想测试在创建类arg1的对象时传递的C值。有没有办法在不使用PowerMock的情况下执行此操作?

1 个答案:

答案 0 :(得分:0)

本质上,没有某些类型的模拟框架,除非您要么返回新对象的结果(在此处或在工厂中),要么将其存储在字段中供以后参考,您无法直接测试这些值是否传递给该构造函数。如果有某些间接使用该实例的东西,你有机会测试它那里,但这极大地削弱了测试点。

话虽这么说,这是一个非常奇怪的用例。如果你正在创建一个对象并且没有对它做任何事情,那么首先创建新实例有什么意义呢?当坐下来写这样的测试时,应该调用这段特殊代码的设计和代码流。

如果您真的想要保留它,请将其创建移动到自己的功能,您可以在其中独立测试它。您实际上将创建一个工厂,允许您在任何需要的地方提供C的新实例。