Maven + testNG + reportNG + Jacoco

controller层主要作用和service层的区别 Controller层和Service层在 Spring Boot 应用程序中各自承担着不同的职责。Controller层主要处理 HTTP 请求和响应,而Service层则负责具体的业务逻辑处理。这种职责分离的设计模式有助于提高代码的可维护性和可测试性,同时也使得应用程序更加模块化和易于扩展。 阅读详情

一、maven pom配置

testNG依赖

<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <version>6.11</version>
    <scope>test</scope>
</dependency>

reportNG 依赖

<dependency>
   <groupId>com.google.inject</groupId>
   <artifactId>guice</artifactId>
   <version>3.0</version>
   <scope>test</scope>
</dependency>
<dependency>
   <groupId>org.uncommons</groupId>
   <artifactId>reportng</artifactId>
   <version>1.1.4</version>
   <scope>test</scope>
   <exclusions>
       <exclusion>
           <groupId>org.testng</groupId>
           <artifactId>testng</artifactId>
       </exclusion>
   </exclusions>
</dependency>

com.google.inject 这个也要依赖上,否则会报错

Jacoco 依赖

<plugin>
   <groupId>org.jacoco</groupId>
   <artifactId>jacoco-maven-plugin</artifactId>
   <version>0.8.1</version>
   <executions>
       <execution>
           <goals>
               <goal>prepare-agent</goal>
           </goals>
       </execution>
       <execution>
           <id>report</id>
           <phase>test</phase> // 测试期间执行插件
           <goals>
               <goal>report</goal>
           </goals>
       </execution>
   </executions>
</plugin>

maven 插件

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.22.1</version>
    <configuration>
        <testFailureIgnore>true</testFailureIgnore>
        <suiteXmlFiles>
            <suiteXmlFile>testng.xml</suiteXmlFile>
        </suiteXmlFiles>
        <!-- 加入编码设置,否则生成的报告会中文乱码 -->
        <argLine> @{argLine} -Dfile.encoding=UTF-8</argLine> 
        <!-- 添加插件,添加ReportNg的监听器,修改最后的TestNg的报告 -->
        <properties>
            <property>
                <name>usedefaultlisteners</name>
                <value>false</value>
            </property>
            <property>
                <name>listener</name>
                <value>org.uncommons.reportng.HTMLReporter</value>
            </property>
        </properties>
    </configuration>
</plugin>

testFailureIgnore 标签设为true, 否则用例有错误,一些插件会不执行
argLine 增加-Dfile.encoding=UTF-8 解决报告打印中文乱码问题,但是要加上 @{argLine},意思是在原有参数上新增,否则jacoco会报错 Skipping JaCoCo execution due to missing execution data file.

二、maven jacoco练习项目

1、创建maven工程

过程忽略

2、配置pom.xml文件

这个是我完整内容

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.glodon</groupId>
  <artifactId>jacocoTest</artifactId>
  <version>0.1</version>

  <name>jacocoTest</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>6.11</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.google.inject</groupId>
        <artifactId>guice</artifactId>
        <version>3.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.uncommons</groupId>
        <artifactId>reportng</artifactId>
        <version>1.1.4</version>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.testng</groupId>
                <artifactId>testng</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
  </dependencies>

  <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.1</version>
            <configuration>
            	<testFailureIgnore>true</testFailureIgnore>
                <argLine> @{argLine} -Dfile.encoding=UTF-8</argLine> 
                <suiteXmlFiles>
                    <suiteXmlFile>testNG.xml</suiteXmlFile>
                </suiteXmlFiles>
                <properties>
                    <property>
                        <name>usedefaultlisteners</name>
                        <value>false</value>
                    </property>
                    <property>
                        <name>listener</name>
                        <value>org.uncommons.reportng.HTMLReporter</value>
                    </property>
                </properties>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.8.1</version>
            <executions>
                <execution>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                </execution>
                <execution>
                    <id>report</id>
                    <phase>test</phase>
                    <goals>
                        <goal>report</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <enconding>UTF-8</enconding>
            </configuration>
        </plugin>
    </plugins>
</build>
</project>

3、编写testNG.xml

完整配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
  <test name="Test1">
    <classes>
      <class name="com.glodon.MyTest"/>
    </classes>
  </test>
  <test name="Test2">
    <classes>
      <class name="com.glodon.MyTest2"/>
    </classes>
  </test>
</suite>

4、工程目录

在这里插入图片描述

5、几个类

1、MyFunction.java

package com.glodon;

public class MyFunction {

    private Boolean myBoolean = false;

    public void setMyBoolean(Boolean isTrue) {

        if (isTrue) {
            myBoolean = true;
        }
    }

    public Boolean getMyBoolean() {

        return myBoolean;
    }

    public String isMan(String name) {

        String value = "你是男人";
        if ("".equals(name)){
            value = "你是隐形人";
        } else if ("男人".equals(name)) {
            value = "你真是是隐形人";
        } else {
           value = "你不是男人"; 
        }        
        return value;
    }
}

2、MyCount.java

package com.glodon;

public class MyCount {

    public int add(int x, int y) {

        int m = x;
        int n = y;
        return m + n;
    }

    public int sub(int x, int y) {

        int m = x;
        int n = y;
        return m + n;
    }

}

3、MyTest.java

package com.glodon;

import org.testng.annotations.Test;

public class MyTest {
    
    MyFunction fun = new MyFunction();
    
    @Test(priority = 1)
    public void test1() {
        fun.getMyBoolean();
        System.out.println("MyTest-----test1");
    }

    @Test(priority = 2)
    public void test2() {
        fun.isMan("");
        fun.isMan("aa");
        System.out.println("MyTest-----test2");
    }
}

4、MyTest2.java

package com.glodon;

import org.testng.annotations.Test;

public class MyTest2 {
    
    MyFunction fun = new MyFunction();
    
    @Test
    public void test1() {
        fun.getMyBoolean();
        System.out.println("MyTest2-----test1");
    }

    @Test
    public void test2() {
        fun.isMan("");
        System.out.println("MyTest2-----test2");
    }
}

6、执行

1、到项目根目录下执行:mvn test
在这里插入图片描述
2、非工程根目录下制定pom文件
mvn test -f “d:\myEclipseWorkspace\jacocoTest\pom.xml”
7、查看Jacoco报告
目录:target/site/jacoco/index.html
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

接口自动化测试实战:从数据驱动到平台化设计,提升测试ROI 接口自动化测试是现代软件工程中保障软件质量、提升交付效率的关键实践。其核心原理在于通过脚本模拟客户端请求,对服务端接口进行自动化验证,从而替代大量重复的手工测试工作。从技术价值看,它能实现快速回归、精准反馈,是DevOps和持续交付流程中不可或缺的一环,尤其适用于核心业务流程的验证。在应用场景上,无论是电商交易链路还是用户服务,接口自动化都能确保业务逻辑的稳定性和正确性。本文以数据驱动和平台化设计为核心,深入探讨了如何构建一个高效、易维护的自动化测试体系,其中参数化技术和前后置动作的设计是解决动态数据和环境 阅读详情

相关推荐

java+eclipse+selenium+maven+testng+reportng+jenkins自动化测试环境搭建

1、安装配置eclipse环境 (1)在官网上下载eclipse安装包,解压; (2)在官网下载jdk,配置环境变量: JAVA_HOME: jdk文件所在目录; path:%JAVA_HOME%\bin或者C:\Program Files\Java\jdk1.8.0_111\bin (3)配置完成后,在cmd控制台中输入java -version,如果出现版本信息等内容,则证明配置成功。 ...

weixin_38102592的博客 3431

MacOS + Idea配置 Maven + ReportNG

用testng做接口自动化,testng自带的报告模板不是特别美观,于是找到了ReportNG。 一、在maven的pom.xml中添加ReportNG(最新版本为1.1.4) <dependencies> <dependency> <groupId>org.uncommons</groupId> ...

K1102的博客 207

TestNG-with-Jacoco:使用 Jacoco 和 Maven 进行 TestNG

TestNG-with-Jacoco 使用 Jacoco 和 Maven 进行 TestNG 创建文件夹 D:\Embedded_Tomcat_Temp 并将 cgw war 复制到其中。 使用 mvn install 构建战争并将其复制到 D:\Embedded_Tomcat_Temp run mvn "clean package" for testng + jacoco

surfire ${argLine} 参数报错

T E S T S ------------------------------------------------------- Exception in thread "main" java.lang.NoClassDefFoundError: ${argLine} Caused by: java.lang.ClassNotFoundException: ${argLine} at java

lxlmycsdnfree的博客 4281

避坑指南:用pygrib处理ERA5气象数据时遇到的5个典型问题

本文总结了使用pygrib库处理ERA5气象GRIB数据时常见的五个典型问题及解决方案,涵盖数据获取、内存管理、时间处理、空间插值和性能优化。重点针对气象数据插值这一核心挑战,提供了处理不规则网格、缺失值和跨日期变更线的实用代码示例与优化策略,帮助用户高效、稳定地完成气象数据分析工作。

weixin_28224217的博客 185

STM32CubeMX 6.4.0 + STM32F407ZGT6 实战:基于YT8512C PHY的lwIP以太网配置与调试

本文详细介绍了使用STM32CubeMX 6.4.0为STM32F407ZGT6微控制器配置YT8512C PHY芯片,并成功移植lwIP以太网协议栈的实战过程。文章从硬件差异分析入手,逐步讲解时钟配置、ETH外设设置、PHY寄存器适配以及lwIP协议栈剪裁等关键步骤,旨在帮助开发者解决非标准PHY芯片的联网难题,最终实现网络连通与Ping测试。

n8m7b6v5c4的博客 595

Controller层和Service层具体区分

controller层,主要用于给前端返回数据的以及接收前端的数据的, service层,总之就是处理数据用的。 处理controller层传过来的数据然后传给给dao层链接数据库进行增删改查, 从dao层传过来的数据的处理,比如封装成JavaBean。 涉及请求、参数、序列化之类的逻辑可以放在controller。 而具体到数据的操作逻辑,也就是增删改查的操作都应该完整封装到service中。 一方面是对于事务的要求,比如一个请求过来,后台需要多步增删改查,一般都要求放到一个service方法中也就是

demo_yo的博客 1万+

手把手教你用RV1103+SC3336摄像头DIY一个离线人脸门禁原型

本文详细介绍了如何利用RV1103芯片和SC3336摄像头构建离线人脸门禁系统。从硬件选型到算法优化,再到业务逻辑实现,提供了完整的DIY指南。重点讲解了RetinaFace和FaceNet算法在嵌入式系统中的移植与调优,帮助开发者快速实现高效、隐私安全的门禁解决方案。

weixin_26905487的博客 511

DAO层、Service层和Controller层的区别

1、dao层:数据访问层 dao层属于一种比较底层,比较基础的操作,具体到对于某个表的增删改查,也就是说某个DAO一定是和数据库的某一张表一 一对应的,其中封装了增删改查基本操作,建议DAO只做原子操作,增删改查。 负责与数据库进行联络的一些任务都封装在此,dao层的设计首先是设计dao层的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可以再模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰,dao层的数据源配置,以及有关数据库连接参...

ftfy123的博客 2万+

Yocto下载加速秘籍:用清华镜像+PREMIRRORS配置让构建速度翻倍

本文详细解析了如何通过配置Yocto的PREMIRRORS优先级策略,并利用清华大学等国内镜像源,显著加速构建过程中的源码下载。文章提供了具体的配置示例和验证方法,帮助开发者解决网络瓶颈,实现构建速度翻倍,提升开发效率。

game4的博客 276

基于MATLAB的鲁棒主成分分析(Robust PCA)图像去噪

鲁棒主成分分析(Robust PCA)是一种有效的图像去噪方法,它能够在保持图像细节的同时去除噪声。本文将介绍如何使用MATLAB实现基于鲁棒PCA的图像去噪,并提供相应的源代码。它假设噪声是随机的、高斯分布的,并将图像分解为一个低秩矩阵和一个稀疏矩阵的和。低秩矩阵表示图像的结构和纹理信息,稀疏矩阵表示图像中的噪声和细节信息。接下来,我们将图像矩阵减去均值,得到规范化的图像矩阵。然后,我们将灰度图像转换为矩阵形式,并计算图像的均值。通过分离出低秩矩阵和稀疏矩阵,我们就得到了去噪后的图像和残差图像。

DevRevolt的博客 1125

MAVEN + TESTNG + REPORTNG + JACOCO覆盖率报告搭建及使用手册

MAVEN + TESTNG + REPORTNG + JACOCO覆盖率报告搭建及使用手册 一.背景 规范单元测试流程,需要数据化了解单元测试的覆盖率,对代码覆盖率统计维度、报告字段说明、报告详细分析描述。并为精准测试、健壮性测试提供指导。 二.搭建方式 2.1 POM配置 TESTNG依赖 <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifa

weixin_43659676的博客 789

栅极驱动电路设计(一)

SiC驱动电路设计需满足更高标准,重点包括:驱动电压需18~20V开通、-3~-5V关断;栅极电阻优选5~10Ω以平衡开关性能与可靠性;必须集成欠压保护(阈值11~15V)和快速短路保护。多电平驱动控制通过动态调节栅压和驱动强度优化性能,如前期弱驱动抑制振荡,后期强驱动降低损耗。以NCE120ED65VTP4为例,栅压从18V提升至20V可使导通损耗降低15%。相比传统方案,有源驱动(含数字分段和模拟闭环控制)能更灵活地提升开关速度与效率。

嵌入式老牛的博客 455

JaCoCo:Java代码覆盖率工具的利器

通过使用JaCoCo,开发人员可以更好地了解测试用例对代码的覆盖情况,发现潜在的问题和改进空间,从而提高软件的质量和可靠性。报告中会显示代码的覆盖率、未覆盖的代码行数等信息,帮助开发人员快速定位问题和改进点。支持多种测试框架:JaCoCo支持多种常用的Java测试框架,包括JUnit、TestNG等,可以与不同的测试框架无缝集成,方便开发人员进行代码覆盖率的分析和报告生成。可视化的报告:JaCoCo可以生成直观、易于理解的代码覆盖率报告,通过图表和图形展示代码的覆盖情况,帮助开发人员快速定位问题和改进点。

AI 爪客,专注 AI 智能体与 Skill 研发落地,斩获腾讯云、讯飞、小米等多场 AI 赛事奖项,分享 Agent 实战干货与工程化经验。 1870

UG\NX二次开发 使用UF_CURVE_create_ocf_feature函数创建“在面上偏置”特征

使用UF_CURVE_create_ocf_feature函数创建“在面上偏置”特征。

王牌飞行员_里海的博客 850

云效 CI/CD + 阿里云 OSS 自动部署前端项目实战指南(2026)

前端项目部署到 OSS + CDN 是阿里云生态中最常见的静态站点托管方案。手动上传 OSS,容易遗漏文件或部署错版本权限配置不当,要么过宽(全桶读写)要么报 403CDN 缓存没刷新,用户看到的还是旧版本多环境(dev/test/pro)流水线重复配置本文基于实际生产环境经验,完整覆盖从 RAM 权限 → OSS 配置 → CDN 加速 → 云效流水线的全链路,含两种授权方案对比和踩坑记录。一套可直接复用的 RAM 最小权限策略两种云效授权方案的完整配置步骤。

探索云原生与智能化驱动下的安全运维新范式。关注DevSecOps、可观测性、AIOps等前沿领域,与您共赴技术前沿。 430

代码分层设计,三层架构Controller、Service和Dao的区别与联系

文章目录1 三层架构概览2 控制层 Controller3 服务层 Service4 数据访问层 DAO5 三层架构与MVC的区别和联系 1 三层架构概览 如果去饭店吃饭,不可能找厨师点菜吧? 小工负责食材存取,洗菜切肉;厨师负责烹饪;跑堂负责接待食客并与后厨沟通。这就是精典的分层体现。 如果一个厨师既负责跑堂,又负责烹饪。那这个饭店的管理一定非常混乱吧。 小工就是DAO,从食材库里(数据源)取出食材(原始数据),进行简单处理(数据对象化)。 厨师就是Service,找到小工(DAO),获取各

小哈里的博客 8834

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

谈谈Controller、Service和Dao

都是Java代码,为啥要区分Controller、Service和Dao,谈谈我的理解。 当然,也可以不用区分,直接一条龙,从接受请求,到业务处理,再到数据库查询全写在一个类里,甚至全部在一个方法中完成,但是这样做,一是不利于代码的迭代,二是代码的结构不清晰。 当然,早期的代码其实就是这样。 总的来说,Controller 用于接收和响应;Service 用于处理业务逻辑,会调用DAO层的API;DAO是对应一张或多张表的,是持久层API,是针对单张或多张表的增删改查。 为了更方便理解,首先介绍Cont.

weixin_44471490的博客 6064

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

service 和 Controller 区别

service  层可以看做是另一个 DAO 层,只是在里面封装了另一些逻辑。 而 Controller 和 service 区别就大了,Controller 要处理请求映射, service 不会。

cnmm22 6408

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【Java知识点记录】DAO层、Service层和Controller层的区别

1. Controller层(控制层):接收客户端的请求,然后调用Service层接口控制业务逻辑,获取到数据,传递数据给页面; 2. Service层(业务层):接收Controller层的请求,然后调用Dao层,获取到数据,service层也叫服务层,主要负责业务模块的逻辑; 3. DAO 层(数据操作层):连接数据库,对数据库进行操作,具体到对于某个表的增删改查,也就是说某个DAO一定是和数据库的某一张表一一对应的,其中封装了增删改查基本操作 方法调用流程如图所示(以查询操作为例) Ser

TFHoney的博客 2万+

IntelliJ IDEA下运行junit 错误: 找不到或无法加载主类

IntelliJ IDEA下运行junit 错误: 找不到或无法加载主类 @{argLine} 解决办法 2018年01月14日 21:45:42 阅读数:556 Preferences -> Build,Execution,Deployment -> Build Tools -> Maven -> Running Tests UncheckargL...

weixin_30883271的博客 2567

mapper层、service层、controller层以及entity层的定义和其之间的关系和区别

Service层,也称为业务逻辑层,是软件架构中负责处理业务逻辑的核心部分。它的主要职责是从controller层接收用户请求,并根据业务需求调用mapper层(DAO层)来读写数据。在Service层中,通常包含了一系列的Service类,每个Service类负责处理一个或多个相关的业务逻辑。Service类通常是一个接口,由具体实现类来实现接口中的方法,以提供业务处理的具体实现。Service层的设计有助于提高JavaWeb应用程序的可维护性、可扩展性和可重用性。

m0_73442630的博客 5911

service 和 Controller 差别

service 层能够看做是还有一个 DAO 层,仅仅是在里面封装了还有一些逻辑。 而Controller 和service 差别就大了。Controller 要处理请求映射,service 不会。 转载于:https://www.cnblogs.com/mfmdaoyou/p/6747821.html...

aodiyi6351的博客 401

单元测试框架TestableMock快速入门(一):快速Mock任意调用

目录 一、TestableMock概述 二、​快速Mock被测类的任意方法调用​ 三、覆写任意类的方法调用 四、覆写任意类的new操作 五、在Mock方法中区分调用来源 六、注意点 一、TestableMock概述 TestableMock是阿里云效团队开发的一款快速Mock的单元测试框架,旨在"让Java没有难测的代码"。 TestableMock现在已不仅是一款轻量易上手的单元测试Mock工具,更是以简化Java单元测试为目标的综合辅助工具集,包含以下功能: 快速Mock任意调用:使

weixiaohuai的博客 6466

JaCoCo 代码覆盖率工具(基于Maven+TestNG)

JaCoco是一个代码覆盖率库。 官方网站:http://www.jacoco.org/   安装:  以 Maven(http://www.testclass.net/maven/) 安装为例: &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;org.testng&lt;/groupId&gt;...

蟋蟀的博客 3578

Spring中@Controller @Service的区别分析

@Service用于标注业务层组件 @Controller用于标注控制层组件(如struts中的action) @Repository用于标注数据访问组件,即DAO组件. @Component泛指组件,当组件不好归类的时候,可以使用这个注解进行标注。 在2.5以前功能是等效的,但是随着发展注解之间的功能发生细化,具体特性请转至http://ifeve.com/spring-5-new/ 内

菜鸟腾飞 3万+
上一篇: selenium 上传下载调用windows窗口--AutoIT
下一篇: git 报错 Authentication failed for
codingOnMyWay
博客等级 码龄7年 1粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值