2013-10-04 63 views
1

创建黄瓜测试时,在定义的测试中定义一个feature文件并在同一个包中定义一个完全相同名称的class文件以运行测试。 (我现在离开Cucumber.options)。访问来自StepDefs的黄瓜测试

据我了解,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执行?

回答

1

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

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