1

创建黄瓜测试时,定义一个feature包含已定义测试的class文件和一个在同一个包中具有完全相同名称的文件来运行测试。(我会留下Cucumber.options他们现在的样子)。

据我正确理解,Cucumber 将在同一个包及其所有子包中查找Step Definitions文件以执行当前场景中的相应步骤。(再次,我离开Cucumber.options他们是什么)。

有没有办法找到正在执行的测试类和处理当前正在执行的步骤的 StepDefs 类之间的链接?

src/
\_ test/
   \_ java/
   |  \_ test.cucumber.package
   |     \_ MyTest1.class
   |     \_ MyTest2.class
   |     \_ StepDefs1.class
   |     \_ StepDefs2.class
   \_ resources/
      \_ test.cucumber.package
         \_ MyTest1.feature
         \_ MyTest2.feature

因此,MyTest1.class 执行 MyTest1.feature 中定义的步骤。这些步骤的实现可以在 StepDefs1.class 或 StepDefs2.class 中定义。MyTest2 也是如此。

1) 我如何知道一个步骤是在 StepDefs1 还是 StepDefs2 中定义的?

2) 当一个步骤被执行时,我怎么知道它是为 MyTest1 还是 MyTest2 执行的?

4

1 回答 1

1

我通过创建单例 TestStepDefLink 类找到了解决方法。然后,我可以从 Test 和 Step Defs 联系这个类。测试开始的那一刻,我得到了一个 TestStepDefLink 对象的实例并设置了 testId 变量。执行 stepDefs 后,我获取 testStepDefLink 实例并读取 testId 变量的值

确实出现了黄瓜从不创建测试类的实例,只创建 StepDef 类的实例。所以我必须自己创建一个测试类实例。

于 2013-10-07T11:25:42.957 回答