2 回答
TA贡献1820条经验 获得超10个赞
检查 maven pom.xml 黄瓜-核心黄瓜-java 黄瓜-junit
这些文件应该具有相同的版本。在您的示例中,cucumber-java artifact id 的版本与其他版本不同。
尝试改变它。
TA贡献1807条经验 获得超9个赞
在下面找到一些片段来分解问题
检查是否存在对 groupid的传递依赖info.cukes
$ mvn dependency:tree | grep 'info.cuke'
[INFO] | +- info.cukes:cucumber-junit:jar:1.2.5:compile
[INFO] | | \- info.cukes:cucumber-core:jar:1.2.5:compile
[INFO] | | +- info.cukes:cucumber-html:jar:0.2.3:compile
[INFO] | | \- info.cukes:cucumber-jvm-deps:jar:1.0.5:compile
[INFO] | +- info.cukes:cucumber-testng:jar:1.2.5:compile
[INFO] | +- info.cukes:cucumber-java:jar:1.2.5:compile
[INFO] | +- info.cukes:gherkin:jar:2.12.2:compile
检查完整输出时会显示您的哪个依赖项取决于它
...
[INFO] +- com.github.mkolisnyk:cucumber-report-generator:jar:1.3:compile
...
[INFO] | +- info.cukes:cucumber-junit:jar:1.2.5:compile
...
[INFO] | +- info.cukes:cucumber-testng:jar:1.2.5:compile
...
[INFO] \- ru.sbtqa.tag:cucumber-runner:jar:1.0.7:compile
[INFO] \- ru.sbtqa.tag:cucumber-runner:jar:1.0.7:compile
[INFO] +- ru.yandex.qatools.allure:allure-cucumber-jvm-adaptor:jar:1.6.4:compile
...
[INFO] | +- info.cukes:cucumber-core:jar:1.2.5:compile
...
[INFO] | +- info.cukes:cucumber-java:jar:1.2.5:compile
[INFO] | +- info.cukes:gherkin:jar:2.12.2:compile
...
[INFO] +- info.cukes:cucumber-junit:jar:1.2.5:compile
由于可能存在具有相同限定名称的类的重叠,因此在 pom.xml
<dependency>
<groupId>com.github.mkolisnyk</groupId>
<artifactId>cucumber-report-generator</artifactId>
<version>1.3</version>
<exclusions>
<exclusion>
<groupId>info.cukes</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
再次运行测试会抛出异常
java.lang.NoClassDefFoundError: gherkin/IGherkinDialectProvider
当我们明确定义io.cucumber:gherkin它可能与指定的依赖项时,将<version>其注释掉以查看是否获取了另一个版本
<!--<dependency>-->
<!--<groupId>io.cucumber</groupId>-->
<!--<artifactId>gherkin</artifactId>-->
<!--<version>6.0.14</version>-->
<!--</dependency>-->
这表明,io.cucumber:cucumber-core:jar:4.2.0取决于版本5.1.0的io.cucumber:gherkin
$ mvn dependency:tree
...
[INFO] +- io.cucumber:cucumber-core:jar:4.2.0:compile
[INFO] | +- io.cucumber:cucumber-html:jar:0.2.7:compile
[INFO] | +- io.cucumber:gherkin:jar:5.1.0:compile
通过这些更改,至少TestNG单元测试正在运行。
作为依赖项com.github.mkolisnyk:cucumber-report-generator
,ru.sbtqa.tag:cucumber-runner
根据info.cuke
依赖项,它们可能不再正常工作。要解决此类问题,您可以:
检查可能不依赖于组 ID 的较新版本
info.cuke
使用早期版本的
io.cucumber
依赖项使用更细粒度的
info.cuke
依赖项排除,而不是排除所有工件 ID以上几点的组合
其他东西,取决于您的用例和要求
也许这些步骤可以帮助您找到适合您的解决方案。
添加回答
举报