如何在测试套件 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