如何在测试套件 Setup/Teardown 上执行某些操作?
How do I execute something on Test Suite Setup/Teardown?
空手道 API 中是否有测试套件 Setup/Teardown 之类的东西?
基本上,我想在一切开始之前和一切结束之后做一些事情。
如果您使用 Java / JUnit 作为入口点,这非常简单,只需在之前/之后添加几行代码。
另请参阅此答案: - ExecutionHook
(仍然需要您编写 Java 代码)具有 beforeAll()
和 afterAll()
回调.
实际上,在 karate-config.js
中使用 callSingle()
并执行 pre-cleanup.
可能是最简单的
已通过以下代码修复。
<...truncated imports...>
@KarateOptions()
public class TestRunner {
@Test
public void testParallel() {
Results results = Runner.path("classpath:THISCLASS").hook(new ExecHook()).parallel(1);
generateReport(results.getReportDir());
assertTrue(results.getErrorMessages(), results.getFailCount() == 0);
}
}
class ExecHook implements ExecutionHook {
@Override
public void afterAll(Results results) {
System.out.println("DO SOMETHING HERE");
}
@Override
public boolean beforeScenario(Scenario scenario, ScenarioContext context) {
return true;
}
@Override
public void afterScenario(ScenarioResult result, ScenarioContext context) {
}
@Override
public boolean beforeFeature(Feature feature, ExecutionContext context) {
return true;
}
@Override
public void afterFeature(FeatureResult result, ExecutionContext context) {
}
@Override
public void beforeAll(Results results) {
}
@Override
public boolean beforeStep(Step step, ScenarioContext context) {
return true;
}
@Override
public void afterStep(StepResult result, ScenarioContext context) {
}
@Override
public String getPerfEventName(HttpRequestBuilder req, ScenarioContext context) {
return null;
}
@Override
public void reportPerfEvent(PerfEvent event) {
}
}
只有一个问题,有没有办法去掉我不使用的方法的 @Override
?
空手道 API 中是否有测试套件 Setup/Teardown 之类的东西? 基本上,我想在一切开始之前和一切结束之后做一些事情。
如果您使用 Java / JUnit 作为入口点,这非常简单,只需在之前/之后添加几行代码。
另请参阅此答案: - ExecutionHook
(仍然需要您编写 Java 代码)具有 beforeAll()
和 afterAll()
回调.
实际上,在 karate-config.js
中使用 callSingle()
并执行 pre-cleanup.
已通过以下代码修复。
<...truncated imports...>
@KarateOptions()
public class TestRunner {
@Test
public void testParallel() {
Results results = Runner.path("classpath:THISCLASS").hook(new ExecHook()).parallel(1);
generateReport(results.getReportDir());
assertTrue(results.getErrorMessages(), results.getFailCount() == 0);
}
}
class ExecHook implements ExecutionHook {
@Override
public void afterAll(Results results) {
System.out.println("DO SOMETHING HERE");
}
@Override
public boolean beforeScenario(Scenario scenario, ScenarioContext context) {
return true;
}
@Override
public void afterScenario(ScenarioResult result, ScenarioContext context) {
}
@Override
public boolean beforeFeature(Feature feature, ExecutionContext context) {
return true;
}
@Override
public void afterFeature(FeatureResult result, ExecutionContext context) {
}
@Override
public void beforeAll(Results results) {
}
@Override
public boolean beforeStep(Step step, ScenarioContext context) {
return true;
}
@Override
public void afterStep(StepResult result, ScenarioContext context) {
}
@Override
public String getPerfEventName(HttpRequestBuilder req, ScenarioContext context) {
return null;
}
@Override
public void reportPerfEvent(PerfEvent event) {
}
}
只有一个问题,有没有办法去掉我不使用的方法的 @Override
?