这里有很多有关指示在项目根目录内使用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()
,但它并未出现在我的代码覆盖率报告中。