【问题标题】:Different test results when project is built in Eclipse在Eclipse中构建项目时的不同测试结果
【发布时间】: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


【解决方案1】:

似乎 Eclipse 中的类路径不完整,并且未安装 lombok。尝试安装 lombok 插件,可以找到一个很好的教程here

【讨论】:

  • 我在之前的一个 cmets 中提到过,一切都已安装。仍然不知道为什么会发生
  • @Uata 与安装无关,我更倾向于配置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-11
  • 2012-09-17
  • 2014-06-01
  • 2017-05-16
  • 2021-12-21
  • 2017-12-01
  • 2011-04-04
相关资源
最近更新 更多