编程语言
首页 > 编程语言> > java-是否可以将黄瓜配置为在不同的弹簧轮廓下运行相同的测试?

java-是否可以将黄瓜配置为在不同的弹簧轮廓下运行相同的测试?

作者:互联网

我有一个应用程序,正在使用不同的技术进行试用.我为每种技术实现了一组接口,并使用spring概要文件来确定要运行的技术.每种技术都有其自己的Spring Java配置,并以它们处于活动状态的配置文件进行了注释.

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

谢谢!

解决方法:

你有两种可能性

>标准-使用黄瓜跑步者跑的几个测试班
>编写支持多种配置的自定义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(){}
}

第二种方法是使用支持多种配置的自定义黄瓜流道.您可以自己编写它,也可以准备一个,例如我的CucumberJar.java和项目cucumber-junit的根目录.
在这种情况下,黄瓜赛跑者将看起来像这样:

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

标签:testing,cucumber,spring-profiles,spring,java
来源: https://codeday.me/bug/20191119/2033171.html