java - JaCoCo 在持续测试 Comparable 时需要忽略 Lombok 生成的代码 - 怎么办?
问题描述
这里有很多关于指示lombok.config
在项目根目录中使用文件并在其中添加这些条目的文章:
lombok.addLombokGeneratedAnnotation = true
但我的问题略有不同。具有 Lombok 注释的类也实现了 Comparable,然后实现了方法 compareTo。
@Document(collection = "item")
@Data
@Builder
public class Item implements Serializable, Comparable<Item> {
@JsonIgnore
private static final long serialVersionUID = 5816882082047405354L;
@Id
@JsonProperty
private String id;
@JsonProperty
private String nome;
@JsonProperty
private Double valor;
public int compareTo(Item o) {
int retorno = this.nome.compareToIgnoreCase(o.getNome());
if (retorno == 0) {
if (this.getValor() < o.getValor()) {
retorno = -1;
} else if (this.getValor() > o.getValor()) {
retorno = 1;
}
}
return retorno;
}
}
这是我的测试课。
public class TestItem {
@Test
public void shouldCompareFullAndBeEqual() {
final Item item1 = Item.builder().nome("Item").valor(20.0).build();
item1.setId("IDDCLIP");
final Item item2 = Item.builder().nome("Item").valor(20.0).build();
item2.setId("IDDCLIP");
assertEquals(item1.compareTo(item2), item2.compareTo(item1));
}
@Test
public void shouldCompareAndBeDifferentByValue() {
final Item item1 = Item.builder().nome("Item").valor(30.0).build();
item1.setId("IDDCLIP");
final Item item2 = Item.builder().nome("Item").valor(20.0).build();
item2.setId("IDDCLIP");
assertNotEquals(item1.compareTo(item2), item2.compareTo(item1));
}
@Test
public void shouldCompareAndBeDifferentByVName() {
final Item item1 = Item.builder().nome("Item1").valor(20.0).build();
item1.setId("IDDCLIP");
final Item item2 = Item.builder().nome("Item").valor(20.0).build();
item2.setId("IDDCLIP");
assertNotEquals(item1.compareTo(item2), item2.compareTo(item1));
}
@Test
public void shouldCompareAndBeDifferentByNameAndValue() {
final Item item1 = Item.builder().nome("Item1").valor(30.0).build();
item1.setId("IDDCLIP");
final Item item2 = Item.builder().nome("Item").valor(20.0).build();
item2.setId("IDDCLIP");
assertNotEquals(item1.compareTo(item2), item2.compareTo(item1));
}
}
当我在这个类上运行我的单元测试时,尽管它测试compareTo()
它并没有出现在我的代码覆盖率报告中。
解决方案
我设法解决了这个问题。@Test 注释是错误的。我使用了错误的包。之后,mvn clean 覆盖率变为 100%
推荐阅读
- php - php 脚本无法使用 SSL 连接到 MySQL
- java - 将我的程序中的值更改为数组
- javascript - 映射可迭代道具对象的问题
- mysql - 在连接语句中使用另一个表的列的值作为表的名称
- amazon-web-services - (ResourceNotFoundException) 调用PutRecord操作时:账号xxxxxxx下的Stream request-data-debugger
- php - php中的PHPMAILER表单验证
- artifactory - Docker 层复用
- python - Boto3 未使用 DynamoDB 加密 SDK 定位凭证
- azure-active-directory - 如何使用来自不同租户的用户登录 Azure App?
- c# - 结构是否会导致内存问题
?