【发布时间】:2011-05-30 01:05:09
【问题描述】:
这是代码:
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
}
}
工作正常,课程已经过测试。但是 Cobertura 说类的私有构造函数的代码覆盖率为零。我们如何为这样的私有构造函数添加测试覆盖率?
【问题讨论】:
-
在我看来,好像您正在尝试强制执行单例模式。如果是这样,您可能会喜欢 dp4j.com(正是这样做的)
-
不应该用抛出异常来替换“故意为空”吗?在这种情况下,您可以编写测试来期望带有特定消息的特定异常,不是吗?不确定这是否矫枉过正
标签: java testing code-coverage