java - 如何在 Java 应用程序中测试私有(private)构造函数?

标签 java unit-testing junit

如果一个类包含一堆静态方法,为了确保没有人错误地初始化这个类的实例,我做了一个私有(private)构造函数:

private Utils() {
}

现在 .. 既然看不到构造函数,怎么能测试呢?这可以被测试覆盖吗?

最佳答案

使用反射,您可以调用私有(private)构造函数:

Constructor<Util> c = Utils.class.getDeclaredConstructor();
c.setAccessible(true);
Utils u = c.newInstance(); // Hello sailor

但是,您甚至可以做到这一点:

private Utils() {
    throw new UnsupportedOperationException();
}

通过在构造函数中抛出异常,您可以阻止所有尝试。


我也会让类本身 final ,只是“因为”:

public final class Utils {
    private Utils() {
        throw new UnsupportedOperationException();
    }
}

关于java - 如何在 Java 应用程序中测试私有(private)构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14077842/

相关文章:

javascript - sinon 模拟上的发射函数

java - 如何单独启动JUnit测试?

java - SSL套接字 : why do we need to do the handshake before accessing the server certificate?

java - 比较两个表并得到不同的打印输出

java - IllegalAccessException : Class org. apache.camel.component.bean.MethodInfo 无法使用修饰符 "public"访问类的成员

运行简单测试时 ScalaTest DeferredAbortedSuite 错误。

unit-testing - 在 Jest 中,当使用函数生成 describe/it block 时,有没有办法让 beforeAll/beforeEach block 在断言之前运行?

Java Selenium HtmlUnitDriver - 由于 Ajax 调用,Gwt 源未填充

java - RequestMapping 占位符在 JUnit 测试中不起作用

java - 如何使用 iBatis-Spring 获取参数化查询