在JBehave中使用多个元filter进行过滤

情况:

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

例:
xyz-cellphone-call.story将描述用手机拨打电话的故事。
xyz-phone-call.story将描述用固定电话拨打电话的故事。
xyz-cellphone-browse.story将描述用手机浏览互联网的故事。

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

我尝试添加以下filter(没有一个工作):

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

行动相同。

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

对的,这是可能的。 在API文档中,您将找到以下信息:

filter由其String表示唯一标识,MetaFilter.MetaMatcher对其进行解析和匹配,以确定是否允许Meta。

MetaFilter.DefaultMetaMatcher将filter解释为任何名称 – 值属性的序列(由空格分隔),前缀为“+”表示包含,“ – ”表示排除。 例如:

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

MetaFilter.GroovyMetaMatcher的使用由前缀“groovy:”触发,并允许将filter解释为Groovy表达式。

MetaFilter filter = new MetaFilter(“groovy:(a == ’11’| a == ’22’)&& b == ’33’”);

因此,如果您使用条件,则可以自定义运行配置。 试试这个例子:

mvn clean install -P -Djbehave.meta.filter =“myCustomRunConf:(+ product && + action)”

更多信息请参阅API文档中的MetaFilter类: http ://jbehave.org/reference/stable/javadoc/core/org/jbehave/core/embedder/MetaFilter.html

我想有一个更简单的解决方案,你使用groovy http://jbehave.org/reference/stable/meta-filtering.html

在你的情况下,它将是-Dmetafilter =“groovy:”产品==’手机’&& action ==’call’“

我为此function文件尝试了“-Dmetafilter = groovy: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场景

怎么样:

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