我正在使用jmockit模拟我的类以进行单元测试。到目前为止,一切正常。
我有一个线程安全和单例的工厂,如下所示:
因此,对于以下课程,我无法获得50%的线路覆盖率,因为我无法涵盖私有构造函数TestFactory()
。
public class TestFactory {
// not able to cover this
private TestFactory() {}
private static class TestHolder {
private static final TestClient INSTANCE = new TestClient();
}
public static IClient getInstance() {
return TestHolder.INSTANCE;
}
}
我的问题是-有什么办法可以覆盖
TestFactory()
私有构造函数,以便我可以在此类的Cobertura报告中获得100%的行覆盖率? 最佳答案
使用反射或仅使用mockit.Deencapsulation.newInstance()
调用它。编写这样的测试方法
@Test
public void privateConstructorCoverage() throws Exception {
Deencapsulation.newInstance(TestFactory.class);
}
Deencapsulation javadoc
提供可以访问(即“解封装”)否则属于被测代码的其他不可访问的字段,方法和构造函数的实用方法。