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创建一个类的实例并检查这个实例?