当前位置: 首页 > news >正文

SpringBoot测试配置属性与启动web环境

目录

 加载测试专用的属性

运行结果

使用外部bean对测试

运行结果

测速类启动web环境

我们在测试类中 

运行结果 


 加载测试专用的属性

点开@SpringBootTest源码中查看

可以在之后加入临时配置, 也可以使用命令行args参数设置。 设置的测试专用参数会覆盖配置文件中的。

package com;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest(args = {properties = {"test.properties=1234"})

public class TestProperties {
    @Value("${test.properties}")
    private String ps;
    @Test
    public void test(){
        System.out.println(ps);
    }
}

运行结果

也可以使用命令行参数

args = {"--test.properties=4321"},

命令行参数的优先级比配置文件的高,所以当两者共存的时候,以命令行的为主

@SpringBootTest(args = {"--test.properties=4321"},properties = {"test.properties=1234"})

 这个测试类设置的属性只对当前测试有效,影响小

使用外部bean对测试

package com.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration//说明当前为配置类
public class TestBean {
    @Bean//创建bean
    public String mess(){
        return "this bean run ";
    }
}

在测试类下,使用@Import注解加载当前测试配置 

package com.test;

import com.config.TestBean;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.Import;

@SpringBootTest
@Import({TestBean.class})
public class TestBeanNow {
    @Autowired//注入bean对象
    public String mess;

    @Test
    public void test(){
        System.out.println(mess);
    }

}

运行结果

测速类启动web环境

在测试类中运行一般是不会启动服务器的,如下图。都是显示运行成功或失败的信息

 我们Ctrl+b点进@SpringBootTest源码中查看,有一个关于web的

 默认值是MOCK,mock:默认提供一个模拟的web环境,不会启动内嵌的服务器

我们在测试类中 

 

 第一个是以你配置文件指定的端口启动,如果没有就默认以8080启动

第二个mock:默认提供一个模拟的web环境,不会启动内嵌的服务器

第三个是不启动服务器

第四个是随机端口启动

我们测试随机端口启动

package com;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class WebTest {
    @Test
    public void test(){


    }
}

运行结果 

运行了两次看端口结果,都是随机的 

相关文章:

  • 11. SpringCloud Alibaba Seata
  • C++模板之——类模板详解及代码示例
  • Python推荐系统和深度学习教程
  • 基于Matlab使用雷达资源管理有效跟踪多个机动目标仿真(附源码)
  • 医院管理系统/医院药品管理系统
  • 项目中使用到的Spring注解及其作用
  • Postgresql源码(86)varchar的创建与插入分析
  • VMware创建虚拟机及安装Linux操作系统
  • 基于51单片机的指纹考勤机密码锁系统
  • 科研小白上路的必备工具链
  • HTML5七夕情人节表白代码 (动态3D相册) HTML+CSS+JS
  • 【云原生 | 从零开始学istio】一、Istio介绍—服务网格
  • 花咲の姫君(異時層ツキハ) / 花咲(异时层妖刀)
  • 体系结构实验(6)—— Cache映射策略
  • 牛客网专项练习30天Pytnon篇第16天
  • [笔记] php常见简单功能及函数
  • “大数据应用场景”之隔壁老王(连载四)
  • 「面试题」如何实现一个圣杯布局?
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 2017前端实习生面试总结
  • Angular 响应式表单之下拉框
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • Gradle 5.0 正式版发布
  • IOS评论框不贴底(ios12新bug)
  • JavaScript 奇技淫巧
  • Java小白进阶笔记(3)-初级面向对象
  • JSONP原理
  • MySQL QA
  • react 代码优化(一) ——事件处理
  • Redis中的lru算法实现
  • Vue组件定义
  • windows下mongoDB的环境配置
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 新版博客前端前瞻
  • 学习使用ExpressJS 4.0中的新Router
  • kubernetes资源对象--ingress
  • python最赚钱的4个方向,你最心动的是哪个?
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • $().each和$.each的区别
  • (2)Java 简介
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (生成器)yield与(迭代器)generator
  • (转)Linq学习笔记
  • (转载)hibernate缓存
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .NET MVC 验证码
  • .Net 代码性能 - (1)
  • .NET和.COM和.CN域名区别
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • @NoArgsConstructor和@AllArgsConstructor,@Builder