1

情况:

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

示例:
xyz-cellphone-call.story 将是描述用手机拨打电话的故事。
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

动作也一样。

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

4

3 回答 3

1

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

过滤器由其字符串表示唯一标识,该字符串表示由 MetaFilter.MetaMatcher 解析和匹配以确定是否允许 Meta。

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

MetaFilter filter = new MetaFilter("+author Mauro -theme 烟雾测试 +map *API -skip"); filter.allow(new Meta(asList("map someAPI")));

MetaFilter.GroovyMetaMatcher 的使用由前缀“groovy:”触发,并允许将过滤器解释为 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

于 2012-10-22T14:05:08.813 回答
0

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

在您的情况下,它将是 -Dmetafilter="groovy:"product=='cellphone' && action=='call'"

我将此功能文件尝试为“-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 场景

于 2015-08-24T14:28:07.163 回答
0

怎么样:

mvn clean install -P -Djbehave.meta.filter = "+product cellphone&&phone"
于 2017-11-03T15:04:03.760 回答