繁体   English   中英

Gradle junit-tests 对于在具有相同依赖项的 main 中工作的完全相同的代码失败

Gradle junit-tests are failing for the same exact code that works in main with same dependencies

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

由于组织限制,我正在使用gradle-2.8版本。

我正在尝试使用以下代码读取 YAML 文件(OpenAPI - swagger 规范):

new OpenAPIParser().readLocation(urlString, null, parseOptions).getOpenAPI();

它按原样存在于main源集中和test源集中。

我已经定义了 2 个配置

  • swagConfig (用于编译时依赖项)
  • swagRuntime (用于运行时依赖项)

其中swagRuntime包含以下依赖项:

'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.12.1'
'com.fasterxml.jackson.core:jackson-databind:2.12.1'
'com.fasterxml.jackson.core:jackson-core:2.12.1'
'com.fasterxml.jackson.core:jackson-annotations:2.12.1'

build.gradle 包括以下内容:

configurations {
    compile.extendsFrom swagConfig
    runtime.extendsFrom swagRuntime
    runtime {
        resolutionStrategy {
            force 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.12.1'
            force 'com.fasterxml.jackson.core:jackson-databind:2.12.1'
            force 'com.fasterxml.jackson.core:jackson-core:2.12.1'
            force 'com.fasterxml.jackson.core:jackson-annotations:2.12.1'
        }
    }
    testRuntime {
        resolutionStrategy {
            force 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.12.1'
            force 'com.fasterxml.jackson.core:jackson-databind:2.12.1'
            force 'com.fasterxml.jackson.core:jackson-core:2.12.1'
            force 'com.fasterxml.jackson.core:jackson-annotations:2.12.1'
        }
    }
}

但是,当我执行我的main源集代码时,它工作得非常好,但是当我运行基于我的test源集的 JUnit 测试时,我遇到了失败:

java.lang.NoSuchMethodError: org.yaml.snakeyaml.events.ScalarEvent.<init>(Ljava/lang/String;Ljava/lang/String;Lorg/yaml/snakeyaml/events/ImplicitTuple;Ljava/lang/String;Lorg/yaml/snakeyaml/error/Mark;Lorg/yaml/snakeyaml/error/Mark;Lorg/yaml/snakeyaml/DumperOptions$ScalarStyle;)V
    at com.fasterxml.jackson.dataformat.yaml.YAMLGenerator._scalarEvent(YAMLGenerator.java:908)
    at com.fasterxml.jackson.dataformat.yaml.YAMLGenerator._writeScalar(YAMLGenerator.java:879)
    at com.fasterxml.jackson.dataformat.yaml.YAMLGenerator.writeNull(YAMLGenerator.java:787)
    at com.fasterxml.jackson.databind.ser.std.NullSerializer.serialize(NullSerializer.java:30)
    at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serializeNull(DefaultSerializerProvider.java:495)
    at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:303)
    at com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1514)
    at com.fasterxml.jackson.databind.ObjectWriter._writeValueAndClose(ObjectWriter.java:1215)
    at com.fasterxml.jackson.databind.ObjectWriter.writeValueAsString(ObjectWriter.java:1085)
    at io.swagger.v3.core.util.Yaml.pretty(Yaml.java:23)
    at io.swagger.v3.parser.converter.SwaggerConverter.readResult(SwaggerConverter.java:113)
    at io.swagger.v3.parser.converter.SwaggerConverter.readLocation(SwaggerConverter.java:91)
    at io.swagger.parser.OpenAPIParser.readLocation(OpenAPIParser.java:16)

调试

在进一步调试堆栈跟踪之后,我的猜测是正在使用的jackson-dataformat-yaml工件不知何故不是2.12.1而是2.9或更低,因为在2.9中, org.yaml.snakeyaml.events.ScalarEvent.<init>的构造函数与找不到签名(我也可能是错的)。

我试过打印

  • classpath
  • testRuntime配置及其已解决的工件。

我看到jackson-dataformat-yaml2.12.1版本本身正在被到处使用。 但是我仍然不清楚为什么构建(使用junit)会如上所述失败。

任何人都可以帮助进一步调试这一点,或者了解为什么 JUnits 的test sourceSet 没有正确解析工件。

感谢所有输入。 谢谢。

问题暂未有回复.您可以查看右边的相关问题.
2 为什么一个 jsfiddle 工作而另一个不工作,即使它们具有完全相同的代码?

我正在尝试创建一个地图,其中每个小节都在悬停时突出显示。 经过研究,我被告知的最好方法是使用显然起作用的 imagemapster,因此是第一个功能链接……但在第二个使用完全相同的代码时却没有。 我错过了什么吗? 如果有人知道这会有所帮助 这个有效 而这个没有 我正在使用 imagemapster。 ...

4 使用完全相同的代码制作新工作表

这是我下面的代码。 我想复制它,以便它适用于每个新工作表,到目前为止,我必须输入 go 并手动将代码更改为新工作表名称。 这是很多工作,必须有一个我不知道的解决方法。 我发现了循环,但如果该编码有效,我不会。 它至少对我不起作用。 我正在尝试为计费时间创建一个秒表 function。 我可以复制工作 ...

5 复制时,VBA代码在47个几乎完全相同的工作表中的4个上始终崩溃。 为什么?

我为我的就业办公室创建了一个工作表系统,用于组织志愿者信息和时间表,并按月分开时间表。 当我想添加一个新月时,我有一个宏,该宏将当月的“主”工作表从“主”工作簿复制到所有47个不同的工作表中。 在其中的四张纸上,以下代码崩溃。 在其余的43个上,它工作正常。 sourceBook.Sh ...

7 .NETCore 中的 EPPlus 对完全相同的代码产生不同的结果

我有直接在 .NETFramework 4.7.1 和 .NETCore 2.2 内置的控制台应用程序之间复制和粘贴的代码,执行时得到完全不同的结果。 起初我使用 Intersect 但当我开始得到不同的结果时。 这是代码: .NETFramework 中的结果大约有 1750 行,它们位于电 ...

9 隐藏具有完全相同类的元素

如何应用display: none; 到第五个元素(标题为“ SumoMe”),并确保仅隐藏SumoMe? 如果我使用.sumome-share-client-animated.sumome-share-client-share { display: none; } .sumome-s ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM