首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个黄瓜ObjectFactory实例

多个黄瓜ObjectFactory实例
EN

Stack Overflow用户
提问于 2019-03-06 23:13:46
回答 2查看 2.6K关注 0票数 1

我编写了一组用于测试自定义框架的功能文件,我希望能够测试该框架的接口的特定实现。我想用不同的实现运行一大堆功能。

为此,我创建了一个自定义ObjectFactory,并使用PicoContainer依赖项注入传递实现。我将这个工厂添加到一个cucumber.properties文件中,它工作得很好。唯一的问题是--如果我有多组实现需要测试,该怎么办?

我可以创建多个ObjectFactories,但是如何对不同的工厂多次运行测试呢?可以使用注解或类似的方法将ObjectFactory实现传递给Runner类吗?我用JUnit runner运行特性,如果我可以用不同的工厂运行几个特性,我想它应该可以工作。然而,我找到的指定ObjectFactory的唯一选项是cucumber.options文件,这是一个模块的文件……

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-07 03:12:58

目前,在Cucumber中不能使用多个对象工厂。作为变通办法,您可以实现单个对象工厂,该对象工厂根据某个环境变量委托给不同的对象工厂。

您可能还想考虑使用cucumber-spring而不是cucumber-pico,因为cucumber-spring可以从步骤定义中提取springs上下文配置注释。如果您的项目结构如下,则只需最少的配置即可完成此操作:

代码语言:javascript
复制
 | - runners 
 | | - CucumberConfigATest.java // @CucumberOptions(glue="steps", extraGlue="config.a") 
 | | - CucumberConfigBTest.java // @CucumberOptions(glue="steps", extraGlue="config.b")
 | - steps
 | | - SomeSteps.java
 | | - MoreSteps.java
 | - config
 | | - a
 | | | - StepsWithContextConfigA.java
 | | - b
 | | | - StepsWithContextConfigB.java
票数 1
EN

Stack Overflow用户

发布于 2019-03-07 04:01:00

@mpkorstanje也提供了一个我想出来的答案。如果有人需要一个实现的例子--这是:

代码语言:javascript
复制
@RunWith(Cucumber.class)
@CucumberOptions(features="src/test/resources")
public class MyRunner {

    @BeforeClass
    public static void setup(){
        System.setProperty(EventProcessorPicoFactory.EVENT_BUS_HANDLER, IUserECNDataHandler.class.getName());
    }

}

public class MyFactory {
    public MyObject build() {
        String type = System.getProperty("my.property.name");
        switch (type) {
            case  "my.value":
                return new MyObject();
            default:
                throw new IllegalArgumentException("not implemented");
            }
        }   

    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55026371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档