У меня есть класс 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;
}
Код: Выделить всё
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class UserTest {
@Test
void test() {
assertNotNull(new User());
}
}
Код: Выделить всё
config.stopBubbling = true
lombok.addLombokGeneratedAnnotation=true

Когда я добавляю аннотацию @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
Мобильная версия