Покрытие тестами ниже при использовании Lombok @BuilderJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Покрытие тестами ниже при использовании Lombok @Builder

Сообщение Anonymous »

У меня возникла проблема с тестовым покрытием с помощью аннотации @Builder Lombok.
У меня есть класс Java, аннотированный @Data Lombok, @AllArgsConstructor и @NoArgsConstructor:

Код: Выделить всё

import lombok.Data;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private int id;
private String name;
}
и тестовый пример JUnit:

Код: Выделить всё

import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

class UserTest {
@Test
void test() {
assertNotNull(new User());
}

}
Мой lombok.config настроен таким образом, что тестовое покрытие игнорируется в сгенерированном коде:

Код: Выделить всё

config.stopBubbling = true
lombok.addLombokGeneratedAnnotation=true
IntelliJ показывает покрытие класса тестами «100 % (0/0)». Это ожидаемо, поскольку весь код, сгенерированный Lombok, игнорируется.
Изображение

Когда я добавляю аннотацию @Builder к классу User, в отчете о покрытии отображается «0% (0/1)»:

Код: Выделить всё

import lombok.Data;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import lombok.Builder;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class User {
private int id;
private String name;
}
Изображение

Тестирование компоновщика с помощью AssertNotNull(User.builder().build()) не меняет тестовое покрытие.
IDE указывает, что строка с @Builder< /code> не охвачен тестами:
Изображение

Аннотация lombok.Generated создана правильно:

Код: Выделить всё

import lombok.Generated;

public class UserDelombok {
private int id;
private String name;

@Generated
public static UserBuilder builder() {
return new UserBuilder();
}

@Generated
public int getId() {
return this.id;
}

@Generated
public String getName() {
return this.name;
}

@Generated
public void setId(int id) {
this.id = id;
}

@Generated
public void setName(String name) {
this.name = name;
}

@Generated
public boolean equals(Object o) {
if (o == this) {
return true;
} else if (!(o instanceof User)) {
return false;
} else {
User other = (User)o;
if (!other.canEqual(this)) {
return false;
} else if (this.getId() != other.getId()) {
return false;
} else {
Object this$name = this.getName();
Object other$name = other.getName();
if (this$name == null) {
if (other$name != null) {
return false;
}
} else if (!this$name.equals(other$name)) {
return false;
}

return true;
}
}
}

@Generated
protected boolean canEqual(Object other) {
return other instanceof User;
}

@Generated
public int hashCode() {
int result = 1;
result = result * 59 + this.getId();
Object $name = this.getName();
result = result * 59 + ($name == null ? 43 : $name.hashCode());
return result;
}

@Generated
public String toString() {
int var10000 = this.getId();
return "User(id=" + var10000 + ", name=" + this.getName() + ")";
}

@Generated
public UserDelombok(int id, String name) {
this.id = id;
this.name = name;
}

@Generated
public UserDelombok() {
}

@Generated
public static class UserBuilder {
@Generated
private int id;
@Generated
private String name;

@Generated
UserBuilder() { // not covered
}

@Generated
public UserBuilder id(int id) { // not covered
this.id = id;
return this;
}

@Generated
public UserBuilder name(String name) { // not covered
this.name = name;
return this;
}

@Generated
public User build() { // not covered
return new User(this.id, this.name);
}

@Generated
public String toString() { // not covered
return "User.UserBuilder(id=" + this.id + ", name="  + this.name + ")";
}
}
}
Я использую следующую конфигурацию:
  • Lombok 1.18.34
    < li>Junit Jupiter 5.10.3
  • IntelliJ IDEA Ultimate 2024.2.2
Почему покрытие меняется при добавить новую аннотацию ломбока?
Как добиться покрытия «100 % (0/0)» с помощью @Builder?
полный проект для воспроизведения проблемы:
https://github.com/jkronegg/lombok-builder-coverage

Подробнее здесь: https://stackoverflow.com/questions/789 ... ok-builder
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»