如何使用BeforeAll和AfterAll黄瓜注释?

时间:2018-07-27 10:12:54

标签: cucumber bdd

我要在功能文件之前执行以下一些操作。

public void beforeFeature() {
    File path = new File("D:\\AccelareWorkFitComplete\\ExtentsReports\\");

    File[] filename =path.listFiles();

    for(File fi:filename)
    {
        if (fi.toString().contains("Automation")) 
        {
            fi.delete();
        }
    }
}

2 个答案:

答案 0 :(得分:1)

我将使用Background(或@Before在后​​台执行)。官方文档为here

Feature File:

    Background:
       Given Files are deleted

    Scenerio: Test 1
       Then There are no files.

然后在我的步骤定义文件中执行以下操作:

private static boolean testsInitialized = false

@Given("^Given files are deleted;$")
public void deleteFiles() {

if (!testsInitialized) {
    initializetest();
    testInitialized = true;
}

如果您绝对需要等效于Junit @BeforeClass的版本,那么从Cucumber 2.4.0开始,以下类适用。

您可以将其放置在test / java / cucumber / runtime中。

package cucumber.runtime; //cannot change.  can be under /test/java

import cucumber.runtime.io.ResourceLoader;
import cucumber.runtime.snippets.FunctionNameGenerator;
import gherkin.pickles.PickleStep;

import java.util.List;

public class NameThisClassWhatever implements Backend {
    private Glue glue;
    private List<String> gluePaths;

    @Override
    public void loadGlue(Glue glue, List<String> gluePaths) {
        this.glue = glue;
        this.gluePaths = gluePaths;

        //Any before steps here
    }

    @Override
    public void disposeWorld() {
        //any after steps here
    }

    @Override
    public void setUnreportedStepExecutor(UnreportedStepExecutor executor) { }

    @Override
    public void buildWorld() { }

    @Override
    public String getSnippet(PickleStep p, String s, FunctionNameGenerator fng) {
        return null;
    }

    public NameThisClassWhatever(ResourceLoader resourceLoader)  { }
}

答案 1 :(得分:0)

beforeAllafterAll挂钩可用于整个黄瓜套件,而不是用于每个功能。

返回了几个版本,其中有beforeFeatureafterFeature钩子,但在较新的版本中已删除。

总而言之,您可以返回几个版本以利用before / after功能的功能,也可以在before挂钩中创建解决方法。