springBoot项目: karate集成cucumber-reporting生成好看的测试报告

本文讲述了如何在SpringBoot项目中使用Karate和Cucumber-reporting创建和美化JSON测试报告,包括测试框架整合和报告生成步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Karate 是一个将 API 测试自动化、模拟性能测试甚至 UI 自动化结合到一个统一框架中的开源工具. 它的测试报告默认是html格式, 如果你想要以下格式的测试报告, 则需要集成cucumber-reporting. 

假设你有一个springBoot项目, 用的是Junit5, 单纯的再集成karate和cucumber-reporting, 需要引的包如下: (当然你的项目会引spring-boot-starter-test,注意Junit的版本冲突...我用的是2.7.12)

1 pom

         <!-- cucumber-reporting -->
        <dependency>
            <groupId>net.masterthought</groupId>
            <artifactId>cucumber-reporting</artifactId>
            <version>5.7.6</version>
        </dependency>

        <!-- karate -->
        <dependency>
            <groupId>com.intuit.karate</groupId>
            <artifactId>karate-core</artifactId>
            <version>1.3.0</version>
            <classifier>all</classifier>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.intuit.karate</groupId>
            <artifactId>karate-junit5</artifactId>
            <version>1.3.0</version>
            <scope>test</scope>
        </dependency>

2 karate demo

你需要参考karate官方文档 -> 快速上手,  依葫芦画瓢写一个karate demo(本人懒得贴代码) https://gitee.com/bitlin/karate?skip_mobile=true#quickstart

demo运行成功会有HTML的测试报告生成, 浏览器可以查看,但是这不是我们想要的效果.

3 指定karate生成JSON格式的测试报告

cucumber-reporting只提供了解析JSON格式文件并重新生成美化后的HTML的方法,所以要karate生成一个JSON格式的测试报告.

只需要在KarateSampleTest的测试方法设置outputCucumberJson属性为true, 如下: 

    @Karate.Test
    Karate testTags() {
        return Karate.run("tags").relativeTo(getClass()).outputCucumberJson(true);
    }

执行karate测试, 成功就能找到对应的JSON格式测试报告文件: 

4 实现美化报告的代码

此时就需要写代码美化karate的测试报告了, 读JSON文件并使用cucumber-reporting重新生成报告

import net.masterthought.cucumber.Configuration;
import net.masterthought.cucumber.ReportBuilder;
import net.masterthought.cucumber.Reportable;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class PrettyKarateReport {

    public void generateCucumberReport() {
        File reportOutputDirectory = new File("target");
        List<String> jsonFiles = new ArrayList<>();
        //karate测试结果Json文件的位置
        jsonFiles.add("target/karate-reports/com.my.integration.karate.tags.json");
        jsonFiles.add("target/karate-reports/com.my.integration.karate.sample.json");

        String buildNumber = "1";
        String projectName = "my-integration-test";

        Configuration configuration = new Configuration(reportOutputDirectory, projectName);

        // optional configuration
        configuration.setBuildNumber(buildNumber);
        // optionally add metadata on main page
        configuration.addClassifications("Platform", "Windows");
        configuration.addClassifications("Component", "karate API Test");
        configuration.addClassifications("Version", "1.0.0");

        ReportBuilder reportBuilder = new ReportBuilder(jsonFiles, configuration);
        Reportable reportable = reportBuilder.generateReports();
    }
}

5 @AfterAll

最后就是让美化报告代码在执行完所有测试案例后跑起来啦...

import com.intuit.karate.junit5.Karate;
import org.junit.jupiter.api.AfterAll;
import org.springframework.boot.test.context.SpringBootTest;


@SpringBootTest(
        webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
public class KarateSampleTest {

    @Karate.Test
    Karate testSample() {
        return Karate.run(new String[]{"sample"}).relativeTo(getClass()).outputCucumberJson(true);
    }

    @Karate.Test
    Karate testTags() {
        return Karate.run("tags").relativeTo(getClass()).outputCucumberJson(true);
    }
    
    /**
     * 在跑所有测试案例之后, 调用PrettyKarateReport美化测试结果报告
     * 注意这里是: org.junit.jupiter.api.AfterAll
     */
    @AfterAll
    public static void generateReport(){
        PrettyKarateReport prettyKarateReport = new PrettyKarateReport();
        prettyKarateReport.generateCucumberReport();
    }
}

执行成功效果如下, overview-features.html就是文章开头那样的报告啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值