2012-07-31 77 views
1

现状:过滤通过JBehave多metafilters

在我目前的项目,我们正在运行各种不同JBehave的故事。每个“.story”文件都与产品和流程相关。

实施例:
XYZ-手机-call.story将描述制造具有蜂窝电话一phonecall故事。
xyz-phone-call.story将描述使用固定电话拨打电话的故事。
xyz-cellphone-browse.story将描述用手机浏览互联网的故事。

我的问题: 在Jbehave中,您可以添加metaFilters以基于元标记过滤故事。假设标签是@product & @action。 (@product手机,@action调用)。
是否有可能通过一个过滤器来运行关于手机故事的JBehave故事,如果是的话,会是什么语法?

我尝试添加以下过滤器(其中没有工作):

+product cellphone +product phone 
+product cellphone|phone 
+product cellphone,phone 

同为行动。

是否可以过滤多个元标签?

回答

1

是的,这是可能的。 在API文档,你会发现这样的信息:

一个过滤器,通过它的字符串表示这是 解析和由MetaFilter.MetaMatcher匹配,以确定是否 元被允许或未被识别。

的MetaFilter.DefaultMetaMatcher解释滤波器作为序列的任何名称 - 值属性的 (由空格隔开),由“+” 列入和前缀“ - ”排除。例如:

MetaFilter filter = new MetaFilter(“+ author Mauro -theme smoke testing + map * API -skip”); filter.allow(new Meta(asList(“map someAPI”)));

使用MetaFilter.GroovyMetaMatcher由前缀 “groovy:”触发,并允许过滤器被解释为Groovy 表达式。

滤机过滤器=新滤机( “常规:(A == '11' |一个== '22') & & b == '33'”);

所以可能如果你玩的条件,你会得到你的运行配置定制。 试试这个例子:

mvn clean install -P -Djbehave.meta。过滤器= “myCustomRunConf:(+产品& & +动作)”

更多信息大写金额的API文档的滤机类: http://jbehave.org/reference/stable/javadoc/core/org/jbehave/core/embedder/MetaFilter.html

+0

好的,我将不得不重试此操作,但在过去,我尝试了过滤器“+产品电话+动作呼叫”,但它不起作用。 – HPacquee 2012-10-23 15:12:56

+0

@HPacquee我更新了答案,我想现在更准确。 – sfrj 2012-10-23 19:14:41

0

我想有你使用Groovy http://jbehave.org/reference/stable/meta-filtering.html

更容易的解决方案

你的情况,这将是 -Dmetafilter =“常规‘产品==‘手机’& &行动==‘呼叫’’

我想这是 “-Dmetafilter =常规:T2 & & T3” 此功能文件

Meta: 
    @t1 

Narrative: 
    As a user 
    I want to blah-blah-blah 


Scenario: test 1 
Meta: 
    @t2 

Given I am on home page 


Scenario: test 2 
Meta: 
    @t2 
    @t3 

Given I am on home page 


Scenario: test 3 
Meta: 
    @t3 

Given I am on home page 

只有测试2的情况在这种情况下

0

执行如何:

mvn clean install -P -Djbehave.meta.filter = "+product cellphone&&phone"