如何通过单元测试覆盖serialVersionUID

问题描述 投票:0回答:1

我正在添加单元测试以覆盖旧版Java项目,

我知道如何进行单元测试并涵盖该课程,我通过添加单元测试栏来做到这一点。

public class Thing implements Serializable {

    private static final long serialVersionUID = -1463850548670691860L;

    private String id;
}

例如取消使用:

ThingTest类{

@Test
void testShouldNotChangeSerialVersionUID() throws NoSuchFieldException {
    final Field serialVersionUID = Thing.class.getDeclaredField("serialVersionUID");
    serialVersionUID.setAccessible(true);

    assertEquals(-1463850548670691860L, getField(serialVersionUID, new Thing()));
}

}

但是sonarjacoco显示serialVersionUID未覆盖。这是声音。

enter image description here

请您提出一个解决方案,通过覆盖此领域使声纳快乐。

是的,我知道,我不应该遵循该工具,而应该遵循惯例。

谢谢

java junit sonarqube code-coverage jacoco
1个回答
0
投票

serialVersionUID不必是私有的。使它受包装保护,并在单元测试中直接访问。

© www.soinside.com 2019 - 2024. All rights reserved.