作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
这是代码:
package com.XXX;
public final class Foo {
private Foo() {
// intentionally empty
}
public static int bar() {
return 1;
}
}
这是测试:
package com.XXX;
public FooTest {
@Test
void testValidatesThatBarWorks() {
int result = Foo.bar();
assertEquals(1, result);
}
@Test(expected = java.lang.IllegalAccessException.class)
void testValidatesThatClassFooIsNotInstantiable() {
Class cls = Class.forName("com.XXX.Foo");
cls.newInstance(); // exception here
}
}
工作正常,类(class)已经过测试。但是 Cobertura 说类的私有(private)构造函数的代码覆盖率为零。我们如何为这样的私有(private)构造函数添加测试覆盖率?
最佳答案
我并不完全同意 Jon Skeet 的观点。我认为,如果您可以轻松赢得报道并消除报道报告中的噪音,那么您应该这样做。要么告诉你的覆盖工具忽略构造函数,要么把理想主义放在一边,编写以下测试并完成它:
@Test
public void testConstructorIsPrivate() throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
Constructor<Foo> constructor = Foo.class.getDeclaredConstructor();
assertTrue(Modifier.isPrivate(constructor.getModifiers()));
constructor.setAccessible(true);
constructor.newInstance();
}
关于java - 如何将测试覆盖率添加到私有(private)构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4520216/
我是一名优秀的程序员,十分优秀!