首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有可能将方法排除在坑覆盖计算之外?

是否有可能将方法排除在坑覆盖计算之外?
EN

Stack Overflow用户
提问于 2022-05-20 10:09:30
回答 1查看 159关注 0票数 1

我的Java项目包含此表单的一个类:

代码语言:javascript
复制
public final class NotInstantiableClass {

    private NotInstantiableClass () {
    }

    // some utility functions

}

不能调用该类的构造函数。它的唯一目的是防止此类的实例化。因此,这个构造函数不能包含在单元测试中。

因此,在运行坑突变测试时,这种方法被列在行覆盖结果中。

是否有办法将此方法排除在覆盖率计算之外?

EN

回答 1

Stack Overflow用户

发布于 2022-09-17 17:27:33

最好在实用程序类中从构造函数中抛出异常:

代码语言:javascript
复制
private ClockHolder() {
    throw new UnsupportedOperationException();
}

然后,您可以通过反射测试这些类:

代码语言:javascript
复制
public final class TestUtils {

    @SuppressWarnings("checkstyle:IllegalThrows")
    public static <T> void invokePrivateConstructor(@Nonnull final Class<T> type)
            throws Throwable {
        final Constructor<T> constructor = type.getDeclaredConstructor();
        constructor.setAccessible(true);

        try {
            constructor.newInstance();
        } catch (InvocationTargetException ex) {
            throw ex.getTargetException();
        }
    }

测试看起来就像

代码语言:javascript
复制
@Test
void privateConstructor() {
    assertThatThrownBy(() -> TestUtils.invokePrivateConstructor(ClockHolder.class))
            .isInstanceOf(UnsupportedOperationException.class);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72317134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档