要在不支持并行执行的情况下使用Junit 4生成Karate Cucumber报告,可以按照以下步骤进行操作:
KarateTestRunner.java
。import com.intuit.karate.junit4.Karate;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({
FeatureRunner1.class,
FeatureRunner2.class
})
public class KarateTestRunner {
// 空类,用于运行所有的Karate特性文件
}
FeatureRunner1.java
、FeatureRunner2.java
。import com.intuit.karate.junit4.Karate;
public class FeatureRunner1 {
@Karate.Test
public Karate testTags() {
return Karate.run("classpath:my.feature").tags("@tag1");
}
}
KarateTestSuite.java
。import net.masterthought.cucumber.Configuration;
import net.masterthought.cucumber.ReportBuilder;
import org.apache.commons.io.FileUtils;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@RunWith(Suite.class)
@Suite.SuiteClasses({
KarateTestRunner.class
})
public class KarateTestSuite {
@BeforeClass
public static void beforeClass() {
// 在运行测试套件之前,删除旧的报告目录
FileUtils.deleteQuietly(new File("target/surefire-reports"));
}
@AfterClass
public static void afterClass() {
// 生成Cucumber报告
Collection jsonFiles = FileUtils.listFiles(new File("target/surefire-reports"), new String[]{"json"}, true);
List jsonPaths = new ArrayList<>(jsonFiles.size());
jsonFiles.forEach(file -> jsonPaths.add(file.getAbsolutePath()));
Configuration configuration = new Configuration(new File("target"), "my-test-suite");
ReportBuilder reportBuilder = new ReportBuilder(jsonPaths, configuration);
reportBuilder.generateReports();
}
}
KarateTestSuite
类,它将运行Karate特性文件并生成Cucumber报告。报告将生成在target/cucumber-reports
目录下。请注意,上述示例假设您已经正确配置了Karate和Cucumber,并且已经在项目的类路径中包含了所需的依赖项。
上一篇:不支持并行和“矢量化不安全”函数