spring - Intellij、cucumber 测试和两个spring Context 配置

标签 spring intellij-idea cucumber

我的项目有两个不同的 cucumber 测试,每个都需要不同的 spring 上下文配置。

我遇到的问题是,当我从 Intellij 单独运行每个测试时,它们加载了正确的 Spring 上下文并且测试通过了,但是我按了运行所有测试,它们都没有通过。

运行 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 {
......
}


非常感谢您的帮助

最佳答案

问题在于IntelliJ cucumber plugin正在使用 cucumber cli运行测试,根本不使用 JUnit 运行器。这会导致一些限制,例如需要在步骤定义类而不是运行器上使用 spring 注释,或者默认情况下要求步骤定义与场景文件位于同一个包中。

在您的示例中,我实际上希望运行单个测试也会失败,除非 /cucumber-scenario{1,2}.xml 也引用了正确的应用程序属性。文件。

我在标准 cucumber 实现中看到的唯一选择是将测试提取到单独的项目中。

我实际上正在处理一个 alternative implementation of cucumber具有您可能想尝试的改进的 Spring 集成。不过,它还没有与 IntelliJ 完全集成。

关于spring - Intellij、cucumber 测试和两个spring Context 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46811637/

相关文章:

java - 如何使用@manualTesting 标记功能文件,使其中的场景永远不会运行

gradle - 使用Gradle时 cucumber 测试结果的西里尔字母输出错误

java - Spring Framework XML 配置元数据和命名空间

spring - 如何在 spring 3.0 @Value 标签中使用键名称中的 "."来寻址属性

java - 替换android studio项目并保留签名

java - IntelliJ 中的 ClassNotFoundException 依赖关系

java - Spring BeanFactory 和类型搜索

java - 为什么我必须在 spring data jpa 中将 @Modifying 与 @Transactional 一起使用?

android - 使用 IntelliJ 13 将 Android 调试器附加到正在运行的进程

ruby-on-rails - 如何告诉 capybara-webkit 不要忽略确认框(或者只是测试它们的内容)