2017-10-18 122 views
3

我的项目有两个不同的黄瓜测试,每个人都需要不同的春天上下文配置。Intellij,黄瓜测试和两个春天上下文配置

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

运行一个maven测试,两个测试都通过了。

这是我的代码:

@RunWith(FCSCucumber.class) 
 
@Cucumber.Options(strict = true 
 
//  , tags = {"[email protected]"} 
 
//  , 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 { 
 
\t 
 
}

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

@RunWith(FCSCucumber.class) 
 
@Cucumber.Options(strict = true 
 
//  , tags = {"[email protected]"} 
 
//  , 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 { 
 
\t 
 
}

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

非常感谢您的帮助

回答

1

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

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

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

我实际上正在研究alternative implementation of cucumber,您可能想尝试改进弹簧集成。但它尚未与IntelliJ完全集成。