Java 如何使用私有构造函数测试最终类?

Java 如何使用私有构造函数测试最终类?,java,unit-testing,Java,Unit Testing,如何测试这样的类请参见下面的代码 public final class A { public static final String FIRST = "1st"; public static final String SECOND = "2nd"; private A() { // NOP } } 现在,我所有的覆盖工具都说构造函数没有测试覆盖。我的测试如下所示: assertEquals(A.FIRST, "1st"); assertEqu

如何测试这样的类请参见下面的代码

public final class A {

    public static final String FIRST = "1st";
    public static final String SECOND = "2nd";

    private A() {
        // NOP
    }
}
现在,我所有的覆盖工具都说构造函数没有测试覆盖。我的测试如下所示:

assertEquals(A.FIRST, "1st");
assertEquals(A.SECOND, "2nd");
我如何测试我的班级

UPD

这个代码解决了我的问题

@Test
public void magic() throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
    Constructor<A> constructor = A.class.getDeclaredConstructor();
    constructor.setAccessible(true);
    A instance = constructor.newInstance();

    assertNotNull(instance);
}

是的,我同意这不是最好的解决方案。但它是有效的:

反射可能是一种方法:

顺便说一下,这可能与所提供链接中的问题重复


或者,您是否可以创建一个受保护的包装器方法,该方法只需将所有调用转发到私有方法?

为什么要测试本质上是NOP方法的内容?我需要它,因为它的覆盖率。我需要100%的保险。但是,Cobertura、Jacoco和我的Innelij IDEA工具都说,类是未覆盖的。您使用类只是为了在其上放置常量。难道你没有更好的地方来摆设这些东西吗?这真是一个奇怪的案例我不想使用枚举。想要100%的代码覆盖率可能更多的是知道谁拥有最大的覆盖率,而不是测试和代码覆盖率的目的,而不是帮助维护和减少bug。好的,那么我认为反射可能是你最好的选择。你的意思是我需要用反射API创建一个类的实例并检查这个实例?