Java 如何用cucumber标签和JUnit构建序列测试?
我有一个梦想,我想用黄瓜来实现Java 如何用cucumber标签和JUnit构建序列测试?,java,junit,cucumber,cucumber-junit,cucumber-java,Java,Junit,Cucumber,Cucumber Junit,Cucumber Java,我有一个梦想,我想用黄瓜来实现 我想结合cucumber和selenium(您可以通过为每个数据库场景运行单独的测试来实现这一点 我更喜欢的另一种方法是,将类似的数据库场景放入功能文件中。例如,为那些如何更改数据的人创建一个功能文件。使用@Before获取场景的标记 @Before public void beforeTest(Scenario scenario){ } 希望这会有所帮助!您必须在挂钩之前进行设置,挂钩仅在标记匹配时运行,并为viewonly数据设置一个静态标志。对于节点数据
我想结合cucumber和selenium(您可以通过为每个数据库场景运行单独的测试来实现这一点 我更喜欢的另一种方法是,将类似的数据库场景放入功能文件中。例如,为那些如何更改数据的人创建一个功能文件。使用@Before获取场景的标记
@Before
public void beforeTest(Scenario scenario){
}
希望这会有所帮助!您必须在挂钩之前进行设置,挂钩仅在标记匹配时运行,并为viewonly数据设置一个静态标志。对于节点数据,您可以添加一个类似于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
}
您可以尝试类似的方法。使用一个始终运行并将Scenario对象作为参数的universal Before钩子。您可以使用
getSourceTagNames()访问Scenario
上的所有标记
方法,该方法返回标记名的字符串集合。然后,您可以根据存在的标记应用逻辑。也许您可以在需要数据设置时,在Before挂钩上放置一个标记来调用它
@Before
public void dataSetup(Scenario sce) {
List<String> tags = sce.getSourceTagNames();
//Do your thing with the tag names....
}
@之前
公共无效数据设置(场景sce){
List tags=sce.getSourceTagNames();
//用标签名做你的事。。。。
}
因此,当使用一个新的场景标记时,我必须通过Cucumber实现一个新的测试来覆盖它?我想,一个新的标记会导致逻辑的改变。但是,难道不可能提取测试、排序和单独管理它们吗?
@Before
public void beforeTest(Scenario scenario){
}
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
public void dataSetup(Scenario sce) {
List<String> tags = sce.getSourceTagNames();
//Do your thing with the tag names....
}