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

Is it possible to configure cucumber to run the same test with different spring profiles?(是否可以配置 cucumber 以使用不同的弹簧配置文件运行相同的测试?)

本文介绍了是否可以配置 cucumber 以使用不同的弹簧配置文件运行相同的测试?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have an application where I'm running a trial with different technologies. I have a set of interfaces implemented with each technology and I use spring profiles to decide which technology to run. Each of the technologies has its own Spring java config annotated with the profile they are active for.

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

I run my cucumber tests defining which profile is the active one but this forces me to manually change the string every time I want to test a different profile, making it impossible to run automated tests for all of them. Is there anyway in cucumber to provide a set of profiles so tests are run once for each of them?

谢谢!

推荐答案

你有两种可能

  1. 标准 - 使用 Cucumber 跑步者运行的少量测试课程
  2. 编写支持多种配置的自定义 Cucumber jUnit 运行器(或准备好运行器).

第一种情况,如下所示.缺点是您必须为每个跑步者定义不同的报告,并且每个配置都有几乎相同的 Cucumber 跑步者.

In the first case, it will look like below. The disadvantage is that you have to define different reports for each runner and have almost identical Cucumber runners for each config.

类的外观如下:

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(){}
}

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

The second approach is to use custom cucumber runner that supports multiple configurations. You can either write it by yourself or take ready one, for example, mine - CucumberJar.java and root of project cucumber-junit. In this case Cucumber runner will looks like this:

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 {
}

这篇关于是否可以配置 cucumber 以使用不同的弹簧配置文件运行相同的测试?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:是否可以配置 cucumber 以使用不同的弹簧配置文件运行相同的测试?

基础教程推荐