是否有某种 运行 id 对单个 "run" 中的所有功能都相同?

Is there some sort of run id that is the same for all features in a single "run"?

我们的测试在某些目录中存储了大量有关每个已执行测试的信息。如果来自同一个 运行 的所有结果一起存储在例如由 date/id 命名的目录中,这将是实用的。这样就可以很容易地查看历史记录并跟踪什么是什么。目前这是一项手动工作,其中输出目录必须在每次 运行 保留记录后重命名。

我们可以很容易地在 Cucumber 之外编写脚本来实现自动化,但是我想知道这是否可以通过 Cucumber 框架来完成。一种简单的方法(如果可能)是创建一个 运行Id 变量并在同一个 运行 中的所有测试之间传递它。但是,据我所知,不可能在场景和功能之间转移 objects/variables。依赖注入似乎只允许在步骤之间使用相同的对象。在黄瓜框架中是否还有另一个地方我们可以启动一个 运行Id 变量并将其传递给所有测试?或者我可以从框架中的某个地方获得黄瓜中已经有类似的东西?

例如,如果我有步骤定义:

public class StepSy {
    File runDirectory;
    DataObject data;

    @Before
    public void before() {
        runDirectory = new File(someObjectPassedDown.getRunId());
    }

    @Given("^Condition (.*)$")
    public void condition() {
        /*Some conditions*/
    }

    @When("^I do (.*)$")
    public void perform(String toDo) {
        /*Some action*/
    }

    @Then("^I expect (.*)$")
    public void expect(String expectedValue) {
        /*Some assertion*/
    }

    @After
    public void after(Scenario scenario) {
        data.writeTo(runDirectory, scenario.getName());
    }
}

还有一个特点:

Feature: Tests

  Scenario: Test01
    Given Condition A
    When I do B
    Then I expect C

  Scenario: Test02
    Given Condition D
    When I do E
    Then I expect F

我可以 运行 这个功能两次,我会得到两个目录:

MyTestRuns
├── Run_17.05.2017_130156
│   ├── Test01
│   └── Test02
├── Run_16.05.2017_163402
│   ├── Test01
│   └── Test02

如果我答对了你的问题,你希望每个 运行 都有一个唯一的目录。 在 class 中设置一个静态标志,其中包含目录初始化的状态。它将确保在第一个场景是 运行 时创建目录,而不再是。并创建一个静态方法来生成 运行 id...

public class StepSy {
    static File runDirectory;
    private static boolean fileInitFlag = false;
    DataObject data;


    @Before
    public void before() {
        if(!fileInitFlag) {
             runDirectory = new File(FileIdGenerator.getRunId());
             fileInitFlag= true;
        }
    }



    @After
    public void after(Scenario scenario) {
        data.writeTo(runDirectory, scenario.getName());
    }
}