我有一个梦想,我想与黄瓜一起实现。
我想将黄瓜与硒结合使用(< =到目前为止这么好)并用标签优化测试执行。在我的梦想中,我能够使用代表数据库szenario的Strings标记我的szenarios。例如:
@noData
Scenario: bake a bread
@oneBread
Scenario: look at bread
@tenBreads
Scenario: give multiple breads to the poor
我的一些测试会改变数据,有些则不会。所以我想,如何聚集所有"非改变"测试以并行访问给定数据
@viewOnly
Scenario: look at a bread
@viewOnly
Scenario: smell a bread
通过这种聚类,我的目标是尽可能实现最轻微的设置和并行工作。
@noData
@viewOnly
Scenario: bake a bread
when i bake a bread
then i see a bread
@oneBread
@viewOnly
Scenario: look at a bread
then i see a bread
@oneBread
@viewOnly
Scenario: smell a bread
then i see a bread
@oneBread
Scenario: slice a bread in half
when i slice my bread
then i got two parts of the bread
@oneBread
Scenario: butter a bread
when i butter my bread
then i got one bread covered in butter
使用此功能文件,我希望此解决方案将按以下顺序处理功能:
@noData =>场景:烤面包
@oneBread => @viewOnly Scenario看面包
@oneBread => @viewOnly Scenario闻到面包
@oneBread =>场景将面包切成两半
@oneBread =>情景黄油面包
一旦我玩JUnit跑步者并试图自己处理创建的JUnit测试。我是否必须再次编写自己的JUnit跑步者?或者是否可以用Cucumber功能满足我的要求?
有人可以帮我吗?
答案 0 :(得分:1)
您可以通过为每个数据库方案运行单独的测试来实现。为此,请使用 - tags 参数,如https://github.com/cucumber/cucumber/wiki/Tags#running-a-subset-of-scenarios
中所述我更喜欢的另一种方法是将类似的数据库场景放入要素文件中。例如,用于改变数据的那些特征文件。使用@Before获取方案的标签。
@Before
public void beforeTest(Scenario scenario){
}
希望有所帮助!
答案 1 :(得分:1)
您必须设置挂钩,只有在标签匹配时才会运行,并且只能为viewonly数据设置静态标志。对于noData,您可以添加一个类似于onebread标签的功能,即重置标志。 我不清楚oneBread标签,它是否意味着设置一个面包。那多个面包怎么样?猜猜你将不得不修改逻辑。 以下内容适用于您提到的功能文件流程。
private static boolean dbSetupReq = true;
//Only get called if both tags are present
@Before(value={"oneBread","viewOnly"})
public void oneBreadViewOnly() {
if(dbSetupReq ) {
addData();
dbSetupReq = false;
}
}
//Only get called if oneBread tag is present
@Before(value={"oneBread"})
public void oneBreadViewOnly() {
dbSetupReq = true;
addData();
}
public void addData() {
// Add logic to add data to database
}
你可以尝试这样的事情。有一个通用的Before钩子,它一直运行并将Scenario对象作为参数接收。您可以使用Scenario
方法访问getSourceTagNames()
上的所有标记,该方法返回标记名的字符串集合。然后,您可以根据存在的标签应用逻辑。也许您可以在Before挂钩上放置一个标签,以便在需要进行数据设置时调用它。
@Before
public void dataSetup(Scenario sce) {
List<String> tags = sce.getSourceTagNames();
//Do your thing with the tag names....
}