我对Cucumber很新。当我注意到运行单个功能与运行整个套件(来自IntelliJ)时的差异时,我只是通过创建一些测试功能来试验它。
我注意到当我运行单一功能时,它使用cucumber-jvm选项运行,在这种情况下,CucumberConfig(用于定义跑步者和黄瓜选项的空白类)和Runner未被使用。但是,当我运行整个套件时,它作为JUnit测试运行,显然,在这种情况下,Config类和运行器进入图片。
我通过以下示例代码证实了这一点:
@RunWith(CustomRunner.class)
@CucumberOptions()
public class CucumberConfig {
@BeforeClass
public static void beforeClass()
{
System.out.println("This is run before Once: ");
}
@AfterClass
public static void afterClass()
{
System.out.println("This is run after Once: ");
}
}
CustomRunner
public class CustomRunner extends Cucumber {
public CustomRunner(Class clazz) throws InitializationError, IOException {
super(clazz);
System.out.println("I am in the custom runner.");
}
}
另外,据我所知,在作为cucumber-junit运行时,我们无法通过特定功能运行,如在cucumber-jvm中运行。如果我错了,请纠正我。
我的疑问是,这是默认行为还是我做错了什么。并且,如果这是默认值,我怎么能让黄瓜总是使用Config文件。
如果有人能对此提供一些见解,我将不胜感激。
答案 0 :(得分:1)
当您使用IntelliJ IDEA运行测试时,IDEA将使用cucumber.api.Main
来运行测试。因此,它将忽略CucumberConfig
它也不会运行@BeforeClass
也不会@AfterClass
,它们仅由JUnit运行程序使用。