我正在尝试将特定步骤定义文件与黄瓜选项中的特定功能文件粘合在一起,当我使用JUnit Test运行测试运行器类时,它不被视为我在测试运行器类中提供的步骤定义文件以供执行。我的控制台还打印了代码片段,以开发测试运行器类中提到的功能文件的步骤。
我刚刚创建了JavaProject,而不是使用maven。
我的功能文件路径(由4个不同的功能文件组成): 项目/功能
我的StepDefinition文件路径(有4个不同的步骤定义文件): 项目/ SRC / StepDefinition
My Runner类文件路径: 项目/ SRC / cucumberTest
在这里,我想在跑步者类
中使用stepDefinition文件4映射特征文件4My 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的新手,有谁能帮助我如何实现这一目标?
答案 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文件的执行,您可以执行以下操作之一。
@CucumberOptions features
选项引用该包(路径)。请注意,如果您未明确指定@CucumberOptions features
,黄瓜将尝试在与您的包结构匹配的子目录中查找功能。在这种情况下,例如,如果您的测试运行器(例如:JUnit)位于包cucumberTest
中,那么您的要素文件必须位于文件夹cucumberTest
中的类路径上。 feature
或scenario
。例如@execute
。这样,您就可以让黄瓜知道您只想通过feature
执行特定标记的scenario
(如果标记应用于要素)或@Cucumber.Options(tags = {"@execute"})
(如果标记应用于方案)。为了达到相反的效果,即从执行中排除特定功能/场景,只需添加~
,例如@Cucumber.Options(tags = {"~@notest"})
。您可以根据需要引用任意数量的标签。More information about cucumber tags
一般情况下,我建议您遵循标准的maven项目结构,即在src/test/java
中添加步骤定义,在src/test/resources
中添加功能文件。您可以从您喜欢的IDE或命令行工具创建新的maven项目。
答案 2 :(得分:0)
您需要将以下代码添加到CucumberOptions
format = {" pretty", " html:target / site / cucumber-pretty"," json:src / test / resources / json / cucumber.json" }