spring-boot - cucumber +TestNG+Spring Boot

标签 spring-boot testng integration-testing cucumber-java

运行者类别:

@CucumberOptions(plugin = "json:target/cucumber-report.json")
@Test(groups = "slow")
public class RunCukesTest extends AbstractTestNGCucumberTests {
}

步骤定义类:

@ContextConfiguration(loader=SpringApplicationContextLoader.class,  classes = {Application.class,MarketDataServiceMockConfig.class})
@WebIntegrationTest({"server.port=0", "management.port=0"})
@TestExecutionListeners(inheritListeners = false, listeners = {
    DependencyInjectionTestExecutionListener.class,
    DirtiesContextTestExecutionListener.class })
public class MyStepdefs extends AbstractTestNGCucumberTests {

private MockMvc mockMvc;
@Autowired
private FilterChainProxy filterChainProxy;


@Autowired
private WebApplicationContext wac;

@Before
public void setUp() {

    wac = (EmbeddedWebApplicationContext) SpringApplication.run(Application.class);


}

}

filterChainProxy 和 wac 没有 Autowiring ,为什么?

感谢您的帮助。

最佳答案

为了将 Cucumber 和 Spring Test 与 TestNG 而不是 JUnit 结合使用,您所需要做的就是在步骤定义中扩展 AbstractTestNGSpringContextTests,其余代码保持不变。


完整代码:

pom.xml

<!-- TestNG -->
<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>${testng.version}</version>
    <scope>test</scope>
</dependency>

<!-- Cucumber with TestNG -->
<dependency>
    <groupId>info.cukes</groupId>
    <artifactId>cucumber-testng</artifactId>
    <version>${cucumber.version}</version>
    <scope>test</scope>
    <exclusions>
        <exclusion>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<!-- Spring Test -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>${spring.version}</version>
    <scope>test</scope>
</dependency>

<!-- Cucumber with Spring -->
<dependency>
    <groupId>info.cukes</groupId>
    <artifactId>cucumber-spring</artifactId>
    <version>${cucumber.version}</version>
    <scope>test</scope>
</dependency>

测试执行器

@CucumberOptions(plugin = "json:target/cucumber-report.json")
@Test(groups = "slow")
public class RunCukesTest extends AbstractTestNGCucumberTests {
}

步骤定义

@ContextConfiguration(loader=SpringApplicationContextLoader.class,  classes = {Application.class,MarketDataServiceMockConfig.class})
@WebIntegrationTest({"server.port=0", "management.port=0"})
@TestExecutionListeners(inheritListeners = false, listeners = {
    DependencyInjectionTestExecutionListener.class,
    DirtiesContextTestExecutionListener.class })
// Notice that the class extends AbstractTestNGSpringContextTests now
public class MyStepdefs extends AbstractTestNGSpringContextTests {

    private MockMvc mockMvc;

    @Autowired
    private FilterChainProxy filterChainProxy;

    @Autowired
    private WebApplicationContext wac;

    @Before
    public void setUp() {
        wac = (EmbeddedWebApplicationContext) SpringApplication.run(Application.class);
    }
}

关于spring-boot - cucumber +TestNG+Spring Boot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35957287/

相关文章:

java - 在单个服务器中部署多个 Spring Boot Web 应用程序

java - 如何高效处理Spring Boot微服务?

java - 如何使用 TestNG 在报告中记录自定义跳过的测试方法详细信息?

java - Selenium 多浏览器测试。只有最后一个浏览器会收到 cookie。测试NG

testing - 无法从 Gradle 中的替代测试源集访问 Kotlin 内部成员

带有 Spring Data Cassandra 1.5.x 的 Spring Boot 1.5.x 与 Cassandra 2.1 不兼容

java - 如何在 Spring Boot 中建立数据库连接之前运行自定义代码?

Java - 以编程方式关闭 TestNG 的默认记者

java - 用于测试的假 S3 服务

java - TestContainers Oracle 超时异常