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....   
}