我想用它的多个参数来模拟一个类的私有构造函数(使用Kotlin):
public final class Foo {
public static class Bla {
public final CustomType1 property1;
public final CustomType2 property2;
private Bla(CustomType1 param1, CustomType2 param2) {
this.property1 = (CustomType1)Objects.requireNonNull(param1);
this.property2 = (CustomType2)Objects.requireNonNull(param2);
}
}
}
通过它,我试图模拟属性(property1, property2
),否则几乎不可能模拟。
2条答案
按热度按时间gzszwxb41#
也许一个私有构造函数不是你要找的。使用私有构造函数,可以将对象创建限制在类
Bla
内。看看here。如果出于某种原因,你需要将构造函数设置为私有,那么你可以尝试使用this issue中提到的反射,但请记住,它实际上会在运行时将
private
修饰符设置为public
。cbwuti442#
我认为只有两种方法。第一个已经提到了@micartey,第二个是使用
PowerMockito
。它是一个强大的工具,允许您模拟静态和私有方法。如果我们谈论代码。所以它看起来应该是这样:不要忘记为PowerMockito准备依赖项
**注意:Power Mock应用于无法更改已提供代码的遗留应用程序。通常,这样的代码没有单元/集成测试,即使是很小的更改也可能导致应用程序中的错误。