我的项目有两个不同的黄瓜测试,每个测试都需要不同的弹簧上下文配置。
我遇到的问题是,当我从Intellij单独运行每个测试时,他们加载正确的Spring Context并且测试正在通过,但是我按下run all test,它们都没有通过。
运行maven测试,两个测试都在通过。
这是我的代码:
@RunWith(FCSCucumber.class)
@Cucumber.Options(strict = true
// , tags = {"~@ignore"}
// , tags = {"@Only"}
, glue ="feature.scenario1"
, features = "src/test/resources/feature/scenario1/"
)
@FCSApplicationProperties(commonProps="config/scenario1/exec.common.properties",
environmentProps="src/test/resources/scenario1-test.properties")
public class TesScenario1Features {
}

@ContextConfiguration("/cucumber-scenario1.xml")
public class scenario1Steps {
......
}

@RunWith(FCSCucumber.class)
@Cucumber.Options(strict = true
// , tags = {"~@ignore"}
// , tags = {"@Only"}
, glue ="feature.scenario2"
, features = "src/test/resources/feature/scenario2/"
)
@FCSApplicationProperties(commonProps="config/scenario2/exec.common.properties",
environmentProps="src/test/resources/scenario2-test.properties")
public class TesScenario2Features {
}

@ContextConfiguration("/cucumber-scenario2.xml")
public class scenario2Steps {
......
}

非常感谢您的帮助
答案 0 :(得分:1)
问题是IntelliJ cucumber plugin正在使用cucumber cli来运行测试,而根本不使用JUnit运行器。这会导致一些限制,例如需要在步骤定义类而不是运行器上使用spring注释,或者默认情况下要求步骤定义与场景文件位于同一个包中。
在您的示例中,我实际上还希望运行单个测试失败,除非/cucumber-scenario{1,2}.xml
文件也引用了正确的应用程序属性。
我看到标准黄瓜实现的唯一选择是将测试提取到单独的项目中。
我实际上正在使用alternative implementation of cucumber进行改进的弹簧集成,您可能想尝试一下。但它还没有与IntelliJ完全集成。