最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Springboot項目編寫測試單元完整步驟記錄

 更新時間:2025年03月03日 11:46:53   投稿:daisy  
這篇文章主要介紹了如何使用JUnit編寫Spring?Boot項目中的測試單元,包括引入依賴、配置文件設置、啟動文件創(chuàng)建以及編寫測試類的步驟,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

以mapper為例編寫測試單元

1.引入junit測試依賴及其他相關依賴

springboot集成了junit,引入springboot的test依賴即可

用Spring Initializr創(chuàng)建springboot項目時,默認會自動添加junit的依賴。如果不使用Spring Initializr,可以手動添加依賴

<!--     spring boot 集成junit   -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <version>${spring-boot.version}</version>
            <scope>test</scope>
            <exclusions>
               <exclusion>
                   <groupId>org.junit.vintage</groupId>
                   <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>

        </dependency>
<!--Mysql驅(qū)動-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
<!--  mybatis-puls的依賴-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-context</artifactId>
        </dependency>

        <!-- 排除 Spring Boot 依賴的日志包沖突 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- Spring Boot 集成 log4j2 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>

junit-vintage-engine是使用老版本junit所需的依賴,不需要,使用<exclusions>排除,當然留著也行。

在maven中查看引入的依賴如下:

2.添加配置文件

在test文件夾下新建resources(如果沒有),并右鍵添加到Resources Root

在resources文件夾下創(chuàng)建日志配置文件和bootstrap.yml文件,分別如下

1)- log4j2配置文件

log4j2配置文件每個項目都會用到,記錄一個比較好用的配置文件,方便以后使用時調(diào)取,日志輸出級別為debug,也可以修改

<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorInterval="180" packages="">
    <properties>
        <property name="logdir">logs</property>
        <property name="PATTERN">%date{YYYY-MM-dd HH:mm:ss,SSS} %level [%thread][%file:%line] - %msg%n%throwable</property>
    </properties>
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="${PATTERN}"/>
        </Console>
 
        <RollingFile name="ErrorAppender" fileName="${logdir}/error.log"
            filePattern="${logdir}/$${date:yyyy-MM-dd}/error.%d{yyyy-MM-dd-HH}.log" append="true">
            <PatternLayout pattern="${PATTERN}"/>
            <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true" />
            </Policies>
        </RollingFile>
 
        <RollingFile name="DebugAppender" fileName="${logdir}/info.log"
            filePattern="${logdir}/$${date:yyyy-MM-dd}/info.%d{yyyy-MM-dd-HH}.log" append="true">
            <PatternLayout pattern="${PATTERN}"/>
            <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true" />
            </Policies>
        </RollingFile>
        
        <!--異步appender-->
         <Async name="AsyncAppender" includeLocation="true">
            <AppenderRef ref="ErrorAppender"/>
            <AppenderRef ref="DebugAppender"/>
        </Async>
    </Appenders>
    
    <Loggers>
         <!--過濾掉spring和mybatis的一些無用的debug信息
        <logger name="org.springframework" level="INFO">
        </logger>
        <logger name="org.mybatis" level="INFO">
        </logger>-->
        <logger name="cn.itcast.wanxinp2p.consumer.mapper" level="DEBUG">
        </logger>
 
        <logger name="springfox" level="INFO">
        </logger>
		<logger name="org.apache.http" level="INFO">
        </logger>
        <logger name="com.netflix.discovery" level="INFO">
        </logger>
        
        <logger name="RocketmqCommon"  level="INFO" >
		</logger>
		
		<logger name="RocketmqRemoting" level="INFO"  >
		</logger>
		
		<logger name="RocketmqClient" level="WARN">
		</logger>
 
        <logger name="org.dromara.hmily" level="WARN">
        </logger>
 
        <logger name="org.dromara.hmily.lottery" level="WARN">
        </logger>
 
        <logger name="org.dromara.hmily.bonuspoint" level="WARN">
        </logger>
		
        <!--OFF   0-->
        <!--FATAL   100-->
        <!--ERROR   200-->
        <!--WARN   300-->
        <!--INFO   400-->
        <!--DEBUG   500-->
        <!--TRACE   600-->
        <!--ALL   Integer.MAX_VALUE-->
        <Root level="DEBUG" includeLocation="true">
            <AppenderRef ref="AsyncAppender"/>
            <AppenderRef ref="Console"/>
            <AppenderRef ref="DebugAppender"/>
        </Root>
    </Loggers>
</Configuration>

2)-bootstrap.yml

#注意datasource的參數(shù)改成工程實際參數(shù)
spring:
  application:
    name: content-service
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/xc_content?serverTimezone=UTC&userUnicode=true&useSSL=false&
    username: root
    password: myb
# 日志文件配置路徑
logging:
  config: classpath:log4j2-dev.xml

3.在測試文件中新建啟動文件

在test/java文件夾下新建和src文件一樣的目錄,并在根目錄下新建啟動文件

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @author may
 * @version 1.0
 * @description 測試類啟動文件
 * @date 2025/2/4  22:37
 */
@SpringBootApplication
public class ContentApplication {
    public static void main(String[] args) {
        SpringApplication.run(ContentApplication.class, args);
    }
}

4.在src的目錄下添加分頁查詢的配置文件

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * <P>
 *        Mybatis-Plus 配置
 *        這個文件有兩個功能:1.配置包掃描文件,即@MapperScan注解;2.bean分頁插件
 * </p>
 */
@Configuration
//掃描mapper,生成mapper接口的代理對象,放到spring容器
@MapperScan("com.xuecheng.content.mapper")
public class MybatisPlusConfig {
   /**
    * 定義分頁攔截器
    */
   //Bean需要和@Configuration配合使用才能生效
   @Bean
   public MybatisPlusInterceptor mybatisPlusInterceptor() {
      //重新定義一個MybatisPlus攔截器
      MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
      //把分頁攔截器添加進去,并指定按照mysql分頁 語句的語法來拼裝分頁
      interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
      return interceptor;
   }
}

5.編寫測試類

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xuecheng.base.model.PageParams;
import com.xuecheng.base.model.PageResult;
import com.xuecheng.content.mapper.CourseBaseMapper;
import com.xuecheng.content.model.dto.QueryCourseParamsDto;
import com.xuecheng.content.model.po.CourseBase;
import org.apache.commons.lang.StringUtils;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;
/**
 * @author may
 * @version 1.0
 * @description 單元測試
 * @date 2025/2/5  20:00
 */
@SpringBootTest
public class CourseBaseMapperTests {

    @Autowired
    private CourseBaseMapper courseBaseMapper;

    @Test
    public void testCourseBaseMapper() {
        CourseBase courseBase = courseBaseMapper.selectById(18L);
//        System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++++");
//        System.out.println("courseBase=" + courseBase);
        Assertions.assertNotNull(courseBase);
        //進行分頁查詢的單元測試
        //1.拼裝查詢條件
        //1.1 查詢條件
        QueryCourseParamsDto courseParamsDto = new QueryCourseParamsDto();
        courseParamsDto.setCourseName("java");
        courseParamsDto.setPublishStatus("202004");
        //1.2新建wrapper
        LambdaQueryWrapper<CourseBase> queryWrapper = new LambdaQueryWrapper<>();
        //1.3根據(jù)名稱模糊查詢,在sql中拼接course_base.name like '%值%'
        queryWrapper.like(StringUtils.isNotEmpty(courseParamsDto.getCourseName()),
                CourseBase::getName,courseParamsDto.getCourseName());
        //1.4根據(jù)課程審核狀態(tài)查詢,在sql中拼接course_base.audit_status=?
        queryWrapper.eq(StringUtils.isNotEmpty(courseParamsDto.getAuditStatus()),
                CourseBase::getAuditStatus,courseParamsDto.getAuditStatus());
        //1.4根據(jù)課程發(fā)布狀態(tài)查詢publishStatus
        queryWrapper.eq(StringUtils.isNotEmpty(courseParamsDto.getPublishStatus()),
                CourseBase::getAuditStatus,courseParamsDto.getPublishStatus());
        //1.5創(chuàng)建page分頁參數(shù)對象,參數(shù):當前頁碼數(shù)/每頁記錄數(shù)
        //1.5.1 獲取page分頁參數(shù)
        PageParams pageParams = new PageParams();
        pageParams.setPageNo(1L);
        pageParams.setPageSize(2L);
        //1.5.2將pageParams參數(shù)傳入page
        Page<CourseBase> page = new Page<>(pageParams.getPageNo(), pageParams.getPageSize());
        //1.6開始分頁查詢
        Page<CourseBase> pageResult = courseBaseMapper.selectPage(page, queryWrapper);
        //1.7獲取查詢結果中的列表和總記錄數(shù)
        //數(shù)據(jù)列表
        List<CourseBase> records = pageResult.getRecords();
        //總記錄數(shù)
        long total = pageResult.getTotal();
        //2.1 需要最終返回一個PageResult對象,包括List<T> items, long counts, long page, long pageSize四個參數(shù)
//        PageResult<CourseBase> courseBasePageResult = new PageResult<>();
//        courseBasePageResult.setItems(records);
//        courseBasePageResult.setCounts(total);
//        courseBasePageResult.setPage(pageParams.getPageNo());
//        courseBasePageResult.setPageSize(pageParams.getPageSize());
        PageResult<CourseBase> courseBasePageResult =
                new PageResult<>(records, total, pageParams.getPageNo(), pageParams.getPageSize());
        System.out.println(courseBasePageResult);
    }
}

5.在main和test模塊中,至少要有一個模塊下有啟動文件,否則測試單元無法正常啟動,會報Test inogred!

總結

到此這篇關于Springboot項目編寫測試單元完整步驟的文章就介紹到這了,更多相關Springboot編寫測試單元內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

新巴尔虎左旗| 利川市| 惠水县| 泰顺县| 化州市| 盈江县| 乌海市| 马公市| 洛隆县| 梅州市| 越西县| 随州市| 南宁市| 浏阳市| 长岭县| 奈曼旗| 南郑县| 安陆市| 天长市| 承德县| 黎平县| 六安市| 台中市| 麻栗坡县| 重庆市| 三亚市| 阿尔山市| 达日县| 犍为县| 洪洞县| 清水县| 电白县| 玉龙| 陆川县| 布尔津县| 定结县| 珲春市| 阿瓦提县| 宣汉县| 柳林县| 上蔡县|