gpt4 book ai didi

java - 如何在线路覆盖中包含私有(private)构造函数?

转载 作者:行者123 更新时间:2023-11-30 08:51:55 24 4
gpt4 key购买 nike

我正在使用 jmockit 模拟我的类以进行单元测试。到目前为止一切正常。

我有一个线程安全的单例工厂,如下所示:

所以对于下面的类,我可以获得 50% 的行覆盖率,因为我无法覆盖私有(private)构造函数 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() 私有(private)构造函数,以便我可以在我的 Cobertura 报告中为此类获得 100% 的行覆盖率?

最佳答案

使用反射或仅使用 mockit.Deencapsulation.newInstance() 调用它。像这样写一个测试方法

@Test
public void privateConstructorCoverage() throws Exception {
Deencapsulation.newInstance(TestFactory.class);
}

Deencapsulation javadoc

Provides utility methods that enable access to (ie "de-encapsulate") otherwise non-accessible fields, methods and constructors belonging to code under test.

关于java - 如何在线路覆盖中包含私有(private)构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30366154/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com