空手道的 Main Class 如何通过 IDE(IntellliJ/Eclipse) 调用

How is Karate's Main Class Invoked via IDE(IntellliJ/Eclipse)

我已经开始使用空手道并发现它使用起来很愉快。在我探索的过程中,我很好奇想知道很多关于它的事情。

其中之一是:

所以,我明白(像 Cucumber)有两种方法 运行:

1.) 在它是 surefire 插件的地方使用构建工具(比如 Maven)将寻找一个 运行ner 文件(使用规定的 *Test.java 命名约定)并且这个文件将被注释(Karate.class)。执行转移到空手道。

2.) IDE 创建 运行 配置(这基本上是使用所需的 class 路径发出 java 命令并使用所需的参数调用 cucumber.api.cli.Main与胶水、特征 file/scenario 线、标签等相关。)

但是在 IntelliJ 上的简单搜索显示 class 路径上有两个 .class 文件,名称为 - cucumber.api.cli.Main。一个来自 cucumber jar 文件,另一个来自 Karate。

我的问题是 java 如何确定它必须调用空手道中的那个而不是黄瓜中的那个。

当我打开 运行 配置并打开一个选项以选择 Main class 时,当我搜索它时它只显示一个,好像它知道忽略黄瓜那个。所以,即使是 IntelliJ 也知道这一点。

是的,我负责这次黑客攻击,我不确定细节,但它似乎有效。

我认为简单的规则是 Java class-loader 有一个序列/层次结构 - 直接在 classpath 上的 classes 被给出首选项,并且 JAR 文件中的任何 classes 都被赋予较低的首选项。就这些了。

当两者都来自 JAR 文件时,(Maven) 依赖顺序很重要。