如果我对您的理解正确,您想使用模拟构造函数测试一个类。这不是一个好的测试方法,因为您没有以最纯粹的形式测试生产代码。
然而,并非一切都按照规则进行,不是吗?:) 所以如果你坚持,JMockIt 会让你这样做。您可以只模拟构造函数并测试其他方法。模拟构造函数在JMockIt 项目站点上有详细记录。
这是一个快速演示,您可以自己尝试:
生产代码:
// src/main/java/pkg/SomeClass.java
public class SomeClass {
public static void main(String[] args) {
new SomeClass("a", 2);
}
public SomeClass(String a, Integer b) {
System.out.println("Production constructor called");
}
}
模拟代码:
// src/test/java/pkg/SomeMock.java
import mockit.Mock;
import mockit.MockUp;
public class SomeMock extends MockUp<SomeClass> {
@Mock
public void $init(String a, Integer b) {
System.out.println("Mock constructor called");
}
}
测试代码:
// srce/test/java/pkg/SomeTest.java
import org.junit.Test;
public class SomeTest {
@Test
public void test() {
new SomeMock();
new SomeClass("a", 2);
}
}
运行生产代码会打印Production constructor called
,但在测试下运行它会打印Mock constructor called
。