Cucumber 如何知道 java 文件到 运行?

How does cucumber know which java file to run?

Given i have a cucumber feature
When I run the feature from my java class with annotations to a certain  package  
Then cucumber knows to go and find the right class

但是它是怎么做到的呢?

如果我复制 class,那么它似乎 运行 两次(然后爆炸了,我没有真正调查)。它是否只是在包中查找通过 annotation/java8-naming 匹配的任何方法?还是发生了其他事情?

我很好奇,因为如果您有两个针对不同场景的 Given,但 classes 在同一个包中怎么办 - 这是个问题吗?有解决办法吗?

Java 和 Gherkin 之间的映射是相反的。也就是说,Java 方法注释的正则表达式用于查找匹配步骤。

如果你有两个相同的 Givens,将执行相同的 Java 方法。这意味着您不能以完全相同的方式注释两个 Java 方法。您将得到的错误是一个不明确的步骤。但是仔细想想,出错可能不是你最大的问题。如果您在系统中的两个地方说同样的事情并且意味着两个不同的事情,那么您可能遇到比抱怨模棱两可的步骤的错误更大的问题。

解决办法?划分你的系统。如果你愿意,你可以把一个模块中的东西看作一个有界上下文,在那个上下文中的任何地方都意味着确切的东西。如果您创建一个新模块,则可以将其视为另一个限界上下文并使用相同的词表示不同的事物。