java - JUnit 不适用于 Lombok - 注释处理似乎不适用于测试类
问题描述
我对 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
更多信息可以在以下位置找到,
推荐阅读
- r - 如何在 ggplot 中用不同颜色/纹理可视化条形图中两个参数的交互?
- sql - 用逗号分隔值在列中搜索的 SQL 查询
- spring - 主键列不自动递增
- c - 我输入了一个值以使循环工作的时间准确,但它不起作用
- javascript - 如何将单个样式传递给 React 中的组件?
- javascript - 从表单/选择中检索数据的问题
- sql-server - 有没有办法将数据库从 Visual Studio 导入 SQL Server?
- python - Errno 2 没有这样的文件或目录:'/tmp/tmp3v35kv5z.upload.pdf'
- python - Python np.select 不遵守我的条件,为什么?
- python - 在 Python 3.7 中将嵌套的 JSON 转换为 CSV