【发布时间】:2020-05-29 06:59:51
【问题描述】:
我有一个 Spring rest 端点 JUnit 测试,有时我会发现一个奇怪的问题。 当我使用 Eclipse 时,我的测试不想通过。它失败并显示以下消息:
caused by: com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of com.package.dto.MyDto: no suitable constructor found, can not deserialize from Object value (missing default constructor or creator, or perhaps need to add/enable type information?)
现在一切都清楚了。没错,我没有默认构造函数,因为我使用 Lombok,我的有问题的类看起来像这样:
@Getter
@Builder
@EqualsAndHashCode
@AllArgsConstructor
public class MyDto {...}
但是当我使用 IntelliJ 构建项目时,一切正常。即使在 Eclipse 中,当使用 IntelliJ 重建项目时,所有测试也会通过。
此外,当我使用控制台 Maven 命令时:mvn clean install 一切正常,没有任何问题。
所以看起来 Eclipse 构建整个项目有点不同。在 IntelliJ 中和使用 mvn test 控制台命令时 Eclipse 构建测试失败后。
问题是为什么会发生?我知道如何修复它(通过添加默认构造函数),但我只想知道 Eclipse 和其他构建工具之间的区别。
有什么想法吗?
【问题讨论】:
-
您需要 lombok 插件才能使其在 Eclipse 中工作。否则它不会生成代码。
-
我已经在 Eclipse 中安装了 Lombok 插件。我应该做一些额外的配置吗?
-
可能是Eclipse里面的Lombok版本和依赖版本不一样?
-
不。 Eclipse插件和依赖版本是一样的。
-
为什么投反对票?我想知道我的问题有什么问题
标签: java eclipse spring-boot intellij-idea junit