类结构看下面喜欢:如何在Junit中模拟子类的构造函数?
class A {
protected String a;
protected String b;
A(String b1) {
new A("A111", b1);
}
A(String a1, String b1) {
a = a1;
b = b1;
}
}
class B extends A {
B(String b) {
super("A", b);
}
}
我需要编写JUnit测试案例,需要嘲笑构造为A类,以便每当对象为B类需要创建A类,然后模拟构造应该得到调用和从模拟构造函数返回对象。
我尝试以下操作:
new MockUp<A>() {
@Mock
public void $init(String b1) {
new A("A11111111", b1);
}
};
但在嘲笑构造函数创建的对象没有得到回报。
我不明白你的要求。你能解释一下你想做什么以及想要测试什么吗? – Tunaki
看起来好像你想将超类构造函数从子类中分离出来,并且只测试子类的逻辑(通过模仿超类)?但事情是这样的:构造函数不会真的返回对象 - 当你调用super()时,你不会将它分配给任何东西,因为它在'this'上运行......所以你不能“调用并返回对象从模拟构造函数“在这种情况下。 – dcsohl
我想模拟单参数化构造函数和模拟构造函数,我想创建使用两个参数化构造函数的对象,并返回相同的对象供进一步使用。 – Abhishek