Karate 如何在测试套件设置/拆卸中执行某些操作?
空手道API中是否有测试套件设置/拆卸之类的东西?Karate 如何在测试套件设置/拆卸中执行某些操作?,karate,Karate,空手道API中是否有测试套件设置/拆卸之类的东西? 基本上,我想在一切开始之前和完成之后做一些事情。如果您使用Java/JUnit作为入口点,这非常简单,只需在之前/之后添加代码行即可 另请参考此答案:ExecutionHook(仍然需要编写Java代码)具有beforeAll()和afterAll()回调 实际上,在karate config.js中使用callSingle()并进行预清理可能是最简单的方法。如果使用Java/JUnit作为入口点,这非常简单,只需在前后添加代码行即可 另请参考
基本上,我想在一切开始之前和完成之后做一些事情。如果您使用Java/JUnit作为入口点,这非常简单,只需在之前/之后添加代码行即可 另请参考此答案:
ExecutionHook
(仍然需要编写Java代码)具有beforeAll()
和afterAll()
回调
实际上,在
karate config.js
中使用callSingle()
并进行预清理可能是最简单的方法。如果使用Java/JUnit作为入口点,这非常简单,只需在前后添加代码行即可
另请参考此答案:ExecutionHook
(仍然需要编写Java代码)具有beforeAll()
和afterAll()
回调
实际上,在karate config.js
中使用callSingle()
并进行预清理可能是最简单的方法。通过下面的代码修复
<...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) {
}
}
@卡拉特选项()
公共类测试运行程序{
@试验
公共void testParallel(){
Results=Runner.path(“classpath:THISCLASS”).hook(newexechook()).parallel(1);
generateReport(results.getReportDir());
assertTrue(results.getErrorMessages(),results.getFailCount()==0);
}
}
类ExecutionHook实现ExecutionHook{
@凌驾
毕竟公共无效(结果){
System.out.println(“在这里做点什么”);
}
@凌驾
公共布尔前置场景(场景场景、场景上下文){
返回true;
}
@凌驾
场景后公共无效(场景结果、场景上下文){
}
@凌驾
公共布尔beforeFeature(功能、ExecutionContext上下文){
返回true;
}
@凌驾
public void afterFeature(功能结果、ExecutionContext上下文){
}
@凌驾
之前的公共无效(结果){
}
@凌驾
公共布尔beforeStep(步骤,场景上下文){
返回true;
}
@凌驾
public void afterStep(步骤结果、场景上下文){
}
@凌驾
公共字符串getPerfEventName(HttpRequestBuilder请求,场景上下文){
返回null;
}
@凌驾
公共作废报告PerfEvent(PerfEvent事件){
}
}
只有一个问题,对于我不使用的方法,是否有办法取消@覆盖?通过下面的代码修复
<...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) {
}
}
@卡拉特选项()
公共类测试运行程序{
@试验
公共void testParallel(){
Results=Runner.path(“classpath:THISCLASS”).hook(newexechook()).parallel(1);
generateReport(results.getReportDir());
assertTrue(results.getErrorMessages(),results.getFailCount()==0);
}
}
类ExecutionHook实现ExecutionHook{
@凌驾
毕竟公共无效(结果){
System.out.println(“在这里做点什么”);
}
@凌驾
公共布尔前置场景(场景场景、场景上下文){
返回true;
}
@凌驾
场景后公共无效(场景结果、场景上下文){
}
@凌驾
公共布尔beforeFeature(功能、ExecutionContext上下文){
返回true;
}
@凌驾
public void afterFeature(功能结果、ExecutionContext上下文){
}
@凌驾
之前的公共无效(结果){
}
@凌驾
公共布尔beforeStep(步骤,场景上下文){
返回true;
}
@凌驾
public void afterStep(步骤结果、场景上下文){
}
@凌驾
公共字符串getPerfEventName(HttpRequestBuilder请求,场景上下文){
返回null;
}
@凌驾
公共作废报告PerfEvent(PerfEvent事件){
}
}
只有一个问题,对于我不使用的方法,有没有办法去掉@Override
s?我尝试使用ExecutionHook
,但我注意到一件事是它不允许我并行使用公共静态结果(类clazz,int threadCount)
用于并行执行的格式,它在生成cucumber测试报告时给了我错误我尝试使用ExecutionHook
,但我注意到,它不允许我并行使用公共静态结果(类clazz,int threadCount)
并行执行的格式,生成cucumber测试报告时会出现错误我已经接受了您的答案,不用担心。我已经接受了你的答案,不用担心。只是把代码明确地贴在了我是如何解决它的上面。