gpt4 book ai didi

java - 如何将测试覆盖率添加到私有(private)构造函数?

转载 作者:IT老高 更新时间:2023-10-28 11:24:06 32 4
gpt4 key购买 nike

这是代码:

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/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com