Java 是否存在某种运行id,该id适用于单个“中的所有功能”;运行;?
我们的测试在一些目录中存储关于每个已执行测试的大量信息。如果同一次运行的所有结果都存储在一个名为date/id的目录中,这将是切实可行的。这样就可以很容易地查看历史记录并跟踪内容。目前这是一个手动作业,每次运行后都必须重命名输出目录以保留记录 我们可以很容易地在cucumber之外编写脚本来实现自动化,但是我想知道这是否可以通过cucumber框架实现。一种简单的方法(如果可能的话)是创建一个runId变量,并在同一次运行中的所有测试之间传递它。然而,据我所知,不可能在场景和功能之间传输对象/变量。依赖项注入似乎只允许在步骤之间使用相同的对象。cucumber框架中是否还有其他地方可以启动runId变量并将其传递给所有测试?或者在cucumber中已经有类似的东西,我可以从框架中的某个地方得到 例如,如果我有步骤定义:Java 是否存在某种运行id,该id适用于单个“中的所有功能”;运行;?,java,cucumber,cucumber-java,Java,Cucumber,Cucumber Java,我们的测试在一些目录中存储关于每个已执行测试的大量信息。如果同一次运行的所有结果都存储在一个名为date/id的目录中,这将是切实可行的。这样就可以很容易地查看历史记录并跟踪内容。目前这是一个手动作业,每次运行后都必须重命名输出目录以保留记录 我们可以很容易地在cucumber之外编写脚本来实现自动化,但是我想知道这是否可以通过cucumber框架实现。一种简单的方法(如果可能的话)是创建一个runId变量,并在同一次运行中的所有测试之间传递它。然而,据我所知,不可能在场景和功能之间传输对象/变
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
如果我没有弄错你的问题,你希望每次跑步都有一个唯一的目录。 在包含目录初始化状态的类中设置静态标志。它将确保在第一个场景运行时创建目录,而不再是。并创建用于生成运行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());
}
}