当前位置: 首页 > 知识库问答 >
问题:

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

顾正初
2023-03-14

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

我运行cucumber测试,定义哪个配置文件是活动的,但这迫使我在每次测试不同的配置文件时手动更改字符串,这使得不可能对所有配置文件运行自动测试。cucumber中是否提供了一组配置文件,以便对每个配置文件运行一次测试?

谢了!

共有1个答案

袁博
2023-03-14

你有两种可能

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

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

@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(){}
}
@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 {
}
 类似资料:
  • 问题内容: 如果是跑它运行在您的文件结尾通过运行启动格式的功能和使用(* T testing.T)模块。我想知道文件中的每个功能是同时运行还是确定地分别运行每个功能?是否为每个人创建一个执行例程?如果确实为每个例程创建了一个go例程,是否可以某种方式监视go例程?是否有可能做类似的事情并为每个实例获取一个实例并对其进行监控,诸如此类? 注意:这个问题假设您使用go(测试)随附的测试框架。 问题答案

  • 对于Mockito和其他测试框架,通常有方法在测试类中模拟方法的功能。我似乎无法让ScalaMock接受同样的方式。 在测试课上,我是: 我知道,如果你嘲笑/剔除类,然后在真实实例上调用相同的功能,这是行不通的。但是有一些变通方法,可以使用模拟调用等。 如果这是错误的方法,测试在同一个测试类中使用其他方法的方法的最佳方法是什么?我认为解耦方法是最好的实践。 谢谢

  • 问题内容: 如文档所述,您可以使用可选参数调用webdriver.FirefoxProfile()来指向浏览器要使用的特定配置文件的目录。我注意到运行此命令花了很长时间,因此当我查看代码时,似乎正在复制指定的配置文件问题是,复制配置文件需要很长时间(大约> 30分钟,没有耐心等待它完成。) 我正在使用用户脚本和selenium的混合为我做一些自动化,因此每次想测试我的代码时都要设置一个新的配置文件

  • 我是Docker的新手,我想知道是否可以使用不同的参数多次运行一个应用程序。 我使用.NET开发了我的应用程序,到目前为止,我已经使用Ubuntu服务执行了所有实例,比如: 其中是启动服务时传递的参数,如:

  • 问题内容: 这是场景: ThreadA将要从某些套接字读取,并将数据写入“ MyFile.txt” ThreadB将读取“ MyFile”,到达末尾时,它将循环播放,直到MyFile中有新数据可用为止(因为我不想重新打开“ MyFile.txt”,并且浪费时间,所以我到达了从我所在的位置..)。 可以做这样的事情吗? 如果没有,还有其他方法可以做这种事情吗? 问题答案: 您提到的问题是著名的生产者

  • 我有一个maven测试项目,它在内部使用Cucumber jvm。我想使用Selenium Grid 2.0并行运行我的功能文件。 我已经启动了中心和节点,但是当我运行测试时。它只在一个chrome实例中连续运行测试。虽然我可以在我的集线器上看到4个chrome实例。 下面是我的@前钩。 有些帮助会很有用的谢谢