2

我创建了一个使用 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

有任何想法吗?

4

3 回答 3

2

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

两种方式轻松解决:

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

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

于 2015-09-28T12:27:42.137 回答
1

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

于 2011-04-25T13:38:36.147 回答
1

以下对我有用

<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>
于 2013-12-02T08:33:56.750 回答