【问题标题】:Unable to run unit tests with Snakeyaml in IntelliJ无法在 IntelliJ 中使用 Snakeyaml 运行单元测试
【发布时间】:2011-04-22 18:47:55
【问题描述】:

我创建了一个使用 SnakeYaml 读取 YAML 文件的 Java 组件。我使用的环境是带有 Maven 插件的 IntelliJ,我的项目是使用 Maven pom 文件构建的。当我运行 Maven 测试项目时,我的单元测试全部通过。但是,当我直接在 IntelliJ 中运行单元测试时,它们会失败。

具体来说,下面的调用 new Yaml(myConstructor) 是抛出异常:

Constructor myConstructor = new Constructor(....)
Yaml yaml = new Yaml(myConstructor)

具体的例外是:

java.lang.NoSuchMethodError: org.yaml.snakeyaml.Yaml.(Lorg/yaml/snakeyaml/constructor/BaseConstructor;)V

有什么想法吗?

【问题讨论】:

  • 查看文件 -> 项目结构 -> 工件。可能有错误。只需单击“修复”按钮。还可以尝试从 maven 配置重新创建 itellij 项目。
  • 谢谢!重新创建 IntelliJ 项目修复了它。你知道为什么需要这样做吗?

标签: java intellij-idea snakeyaml


【解决方案1】:

发生这种情况是因为 TestNG 插件。这对 IntelliJ 和 Eclipse 来说都是一个问题。

通过两种方式轻松解决:

  1. 为您选择的 IDE 更新到最新的 TestNG 插件版本,希望发布的版本不会与您的项目所需的版本冲突
  2. 在 Eclipse(或 IntelliJ 等效项)中启用“使用 Project TestNG jar”。此设置在项目特定设置的 TestNG 部分中可用。

第二种方式是首选,因为 TestNG 依赖项将由您的构建工具管理(您使用的是构建工具,对吗?!)并且您拥有更多的灵活性。

【讨论】:

    【解决方案2】:

    看看file -> proj structure -> artifacts。可能有错误。只需单击“修复”按钮。还可以尝试从 Maven 配置重新创建 itellij 项目。通常库范围存在问题,例如TEST/PROVIDED

    【讨论】:

      【解决方案3】:

      以下内容对我有用

      <dependency>
                  <groupId>org.testng</groupId>
                  <artifactId>testng</artifactId>
                  <version>6.2</version>
                  <type>jar</type>
                  <exclusions>
                      <exclusion>
                          <artifactId>snakeyaml</artifactId>
                          <groupId>org.yaml</groupId>
                      </exclusion>
                  </exclusions>
              </dependency>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-20
        • 2016-05-12
        • 2015-09-26
        • 1970-01-01
        • 1970-01-01
        • 2019-10-16
        • 2013-10-17
        • 1970-01-01
        相关资源
        最近更新 更多