gpt4 book ai didi

java - JUnit 无法与 Lombok 一起使用 - 注释处理似乎不适用于测试类

转载 作者:行者123 更新时间:2023-12-02 01:43:31 31 4
gpt4 key购买 nike

我在使用 Lombok 和 JUnit 时遇到问题。

我正在使用最新的 IntelliJ Idea,安装了 Lombok 插件并启用了注释处理。

我有一个实体类:

@Data
@Builder
@AllArgsConstructor
public class User {

private String name;
private String email;

}

构建.gradle:

dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
compile group: 'org.projectlombok', name: 'lombok', version: '1.18.10'
testCompile group: 'org.projectlombok', name: 'lombok', version: '1.16.10'
testAnnotationProcessor "org.projectlombok:lombok:1.18.10"
}

最后是测试用例:

@Test
public void whenCheckIfPresent_thenOk() {
User user = User.builder().name("John").email("sf@sf.pl").build();
Optional<User> opt = Optional.ofNullable(user);
assertTrue(opt.isPresent());

assertEquals(user.getEmail(), opt.get().getEmail());
}

当我尝试运行此测试时,出现以下错误:

IdeaProjects\Tutoriale\src\test\java\optionals\OptionalsTest.java:26: error: cannot find symbol
User user = User.builder().name("John").email("sf@sf.pl").build();
^
symbol: method builder()
location: class User
IdeaProjects\Tutoriale\src\test\java\optionals\OptionalsTest.java:30: error: cannot find symbol
assertEquals(user.getEmail(), opt.get().getEmail());
^
symbol: method getEmail()
location: variable user of type User
IdeaProjects\Tutoriale\src\test\java\optionals\OptionalsTest.java:30: error: cannot find symbol
assertEquals(user.getEmail(), opt.get().getEmail());
^
symbol: method getEmail()
location: class User

注释处理似乎不起作用,但我不知道如何解决这个问题。

最佳答案

您使用的 Gradle 版本是什么? Gradle 版本 5.4.1 中出现了此问题。

对于测试源集中的Lombok注解,需要将Lombok添加到两个依赖配置中:

testCompileOnly '...'testAnnotationProcessor '...'

与compileOnly和annotationProcessor一样,第一个使注释可供代码使用,第二个在编译期间激活注释处理

您可以尝试如下依赖项,

    compileOnly 'org.projectlombok:lombok:1.18.8'
annotationProcessor 'org.projectlombok:lombok:1.18.8'

引用:https://projectlombok.org/setup/gradle Lombok doc

更多信息可以在以下位置找到,

https://github.com/rzwitserloot/lombok/issues/1945

关于java - JUnit 无法与 Lombok 一起使用 - 注释处理似乎不适用于测试类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59426699/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com