java - 是否可以配置 cucumber 以使用不同的 Spring 配置文件运行相同的测试?

标签 java spring testing cucumber spring-profiles

我有一个应用程序,我在其中运行不同技术的试用版。我有一组用每种技术实现的接口(interface),我使用 spring 配置文件来决定运行哪种技术。每项技术都有自己的 Spring java 配置,并用它们所针对的配置文件进行注释。

我运行我的 cucumber 测试来定义哪个配置文件是 Activity 的,但这迫使我每次想要测试不同的配置文件时手动更改字符串,从而无法对所有配置文件运行自动化测试。 cucumber 中是否有提供一组配置文件以便为每个配置文件运行一次测试?

谢谢!

最佳答案

你有两种可能

  1. 标准 - 使用 Cucumber runners 运行的几个测试类
  2. 编写支持多种配置的自定义 Cucumber jUnit 运行程序(或准备一个)。

在第一种情况下,它将如下所示。缺点是您必须为每个运行器定义不同的报告,并且每个配置都有几乎相同的 Cucumber 运行器。

enter image description here

这是类的样子:

CucumberRunner1.java

@RunWith(Cucumber.class)
@CucumberOptions(glue = {"com.abc.def", "com.abc.common"},
        features = {"classpath:com/abc/def/",
                "classpath:com/abc/common.feature"},
        format = {"json:target/cucumber/cucumber-report-1.json"},
        tags = {"~@ignore"},
        monochrome = true)
public class CucumberRunner1 {
}

StepAndConfig1.java

@ContextConfiguration(locations = {"classpath:/com/abc/def/configuration1.xml"})
public class StepsAndConfig1 {
    @Then("^some useful step$")
    public void someStep(){
        int a = 0;
    }
}

CucumberRunner2.java

@RunWith(Cucumber.class)
@CucumberOptions(glue = {"com.abc.ghi", "com.abc.common"},
        features = {"classpath:com/abc/ghi/",
                "classpath:com/abc/common.feature"},
        format = {"json:target/cucumber/cucumber-report-2.json"},
        tags = {"~@ignore"},
        monochrome = true)
public class CucumberRunner2 {
}

OnlyConfig2.java

@ContextConfiguration(classes = JavaConfig2.class)
public class OnlyConfig2 {
    @Before
    public void justForCucumberToPickupThisClass(){}
}

第二种方法是使用支持多种配置的自定义 Cucumber runner。你可以自己写,也可以自己准备一个,比如我的-CucumberJar.java和项目的根 cucumber-junit . 在这种情况下,Cucumber runner 将如下所示:

CucumberJarRunner.java

@RunWith(CucumberJar.class)
@CucumberOptions(glue = {"com.abc.common"},
        tags = {"~@ignore"},
        plugin = {"json:target/cucumber/cucumber-report-common.json"})
@CucumberGroupsOptions({
        @CucumberOptions(glue = {"com.abc.def"},
                features = {"classpath:com/abc/def/",
                        "classpath:com/abc/common.feature"}
        ),
        @CucumberOptions(glue = {"com.abc.ghi"},
                features = {"classpath:com/abc/ghi/",
                        "classpath:com/abc/common.feature"}
        )
})
public class CucumberJarRunner {
}

关于java - 是否可以配置 cucumber 以使用不同的 Spring 配置文件运行相同的测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35314463/

相关文章:

java - 在 wiremock 中,是否可以根据请求记录 cookie?

python - 如何从列表中删除项目?

java - Google HTTP Java 客户端的 POST 请求错误

java - Spring文件上传 - 得到预期的MultipartHttpServletRequest : is a MultipartResolver configured?错误

Java GUI、JFrames 和对话框

Spring嵌套事务

java - 如何使用注释 Autowiring RestTemplate

django - 如何使用 django 和 selenium/grid 模拟并行多用户可用性测试?

java - 表示工作流的类结构

java - 是否可以使用 PrintWriter 在某一行之后开始写入文件?