如何在Cucumber runner类中指定特定的步骤定义文件

时间:2017-06-29 02:22:38

标签: java selenium bdd gherkin cucumber-junit

我正在尝试将特定步骤定义文件与黄瓜选项中的特定功能文件粘合在一起,当我使用JUnit Test运行测试运行器类时,它不被视为我在测试运行器类中提供的步骤定义文件以供执行。我的控制台还打印了代码片段,以开发测试运行器类中提到的功能文件的步骤。

我刚刚创建了JavaProject,而不是使用maven。

我的功能文件路径(由4个不同的功能文件组成): 项目/功能

我的StepDefinition文件路径(有4个不同的步骤定义文件): 项目/ SRC / StepDefinition

My Runner类文件路径: 项目/ SRC / cucumberTest

在这里,我想在跑步者类

中使用stepDefinition文件4映射特征文件4

My Runner类代码:

package cucumberTest;

import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;

@RunWith(Cucumber.class)
@CucumberOptions(
        features = "Feature/Test4.feature"
        ,glue = {"stepDefinition/Test4_Step"}
        ,monochrome = true
        )
public class Test4_TestRunner {

} 

我是Cucumber的新手,有谁能帮助我如何实现这一目标?

3 个答案:

答案 0 :(得分:1)

您正在设置粘贴路径到类而不是包名称。请尝试使用下面给出的包名。

package cucumberTest; 
import org.junit.runner.RunWith;  
import cucumber.api.CucumberOptions; 
import cucumber.api.junit.Cucumber; 
@RunWith(Cucumber.class) 
@CucumberOptions( 
   features = "Feature/Test4.feature" ,
   glue =
{"stepDefinition"} ,
  monochrome = true ) 
 public class Test4_TestRunner { } 

答案 1 :(得分:1)

当您向@CucumberOptions features提供路径参数时,该特定包(路径)中的所有.feature文件将由测试运行器执行。您不能通过@CucumberOptions feature选项引用特定文件,仅引用包(路径)。为了限制对特定.feature文件的执行,您可以执行以下操作之一。

  1. 将您愿意执行的特定.feature文件移动到单独的包中,然后通过@CucumberOptions features选项引用该包(路径)。请注意,如果您未明确指定@CucumberOptions features,黄瓜将尝试在与您的包结构匹配的子目录中查找功能。在这种情况下,例如,如果您的测试运行器(例如:JUnit)位于包cucumberTest中,那么您的要素文件必须位于文件夹cucumberTest中的类路径上。
  2. 使用标记在.feature文件中标记featurescenario。例如@execute。这样,您就可以让黄瓜知道您只想通过feature执行特定标记的scenario(如果标记应用于要素)或@Cucumber.Options(tags = {"@execute"})(如果标记应用于方案)。为了达到相反的效果,即从执行中排除特定功能/场景,只需添加~,例如@Cucumber.Options(tags = {"~@notest"})。您可以根据需要引用任意数量的标签。
  3. More information about cucumber tags

    一般情况下,我建议您遵循标准的maven项目结构,即在src/test/java中添加步骤定义,在src/test/resources中添加功能文件。您可以从您喜欢的IDE或命令行工具创建新的maven项目。

    More information how to get started with maven project.

答案 2 :(得分:0)

您需要将以下代码添加到CucumberOptions

format = {" pretty",                 " html:target / site / cucumber-pretty"," json:src / test / resources / json / cucumber.json" }