Необходимо игнорировать код, сгенерированный Lombok для JaCoCo, пока он продолжает тестировать Comparable - Как это сделать? - PullRequest
0 голосов
/ 06 ноября 2019

Здесь много статей о том, как использовать 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()

MY coverage report Может ли кто-нибудь мне помочь?

Ответы [ 2 ]

0 голосов
/ 08 ноября 2019

Мне удалось решить проблему. Аннотация @Test была неправильной. Я использовал неправильный пакет. После этого и mvn clean покрытие стало 100%

0 голосов
/ 07 ноября 2019
  1. Я заметил, что ваш скриншот содержит @EqualsAndHashCode.Exclude, а ваш код - нет. Кто знает, что в вашей конфигурации отличается от других?
  2. Аннотация @Generated и, следовательно, ваш файл lombok.config не должны влиять на детали покрытия. Я ожидаю, что либо нет данных о покрытии вообще, либо полностью. К сожалению, вы не сообщите нам, как именно вы измеряете ваше покрытие.
  3. Сам класс в порядке и (почти) полностью покрыт вашими тестами. Я подтвердил это вручную. Однако, как уже говорилось, мои настройки могут отличаться от ваших.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...