我想测试构造函数中传递的参数,例如:
class A {
public void function (String arg1, String arg2) {
C c = new C(arg1, arg2);
//....
}
}
在此,我想测试在创建类arg1
的对象时传递的C
值。有没有办法在不使用PowerMock的情况下执行此操作?
答案 0 :(得分:0)
本质上,没有某些类型的模拟框架,除非您要么返回新对象的结果(在此处或在工厂中),要么将其存储在字段中供以后参考,您无法直接测试这些值是否传递给该构造函数。如果有某些间接使用该实例的东西,你有机会测试它那里,但这极大地削弱了测试点。
话虽这么说,这是一个非常奇怪的用例。如果你正在创建一个对象并且没有对它做任何事情,那么首先创建新实例有什么意义呢?当坐下来写这样的测试时,应该调用这段特殊代码的设计和代码流。
如果您真的想要保留它,请将其创建移动到自己的功能,您可以在其中独立测试它。您实际上将创建一个工厂,允许您在任何需要的地方提供C
的新实例。