15-基础加强3-单元测试日志

news/2024/5/2 13:13:00/文章来源:https://blog.csdn.net/hza419763578/article/details/129132031

文章目录

    • 1.单元测试
      • 1.1概述【理解】
      • 1.2特点【理解】
      • 1.3使用步骤【应用】
      • 1.4相关注解【应用】
    • 2.日志
      • 2.1概述【理解】
      • 2.2日志体系结构和Log4J【理解】
      • 2.3入门案例【应用】

1.单元测试

1.1概述【理解】

JUnit是一个 Java 编程语言的单元测试工具。JUnit 是一个非常重要的测试工具

1.2特点【理解】

  • JUnit是一个开放源代码的测试工具。
  • 提供注解来识别测试方法。
  • JUnit测试可以让你编写代码更快,并能提高质量。
  • JUnit优雅简洁。没那么复杂,花费时间较少。
  • JUnit在一个条中显示进度。如果运行良好则是绿色;如果运行失败,则变成红色。

1.3使用步骤【应用】

  • 使用步骤

    1. 将junit的jar包导入到工程中 junit-4.9.jar (右键add as library…)
    2. 编写测试方法该测试方法必须是公共的无参数无返回值的非静态方法
    3. 在测试方法上使用@Test注解标注该方法是一个测试方法
    4. 选中测试方法右键通过junit运行该方法
  • 代码示例

import org.junit.Test;
public class JunitDemo01 {public static void main(String[] args) {}@Testpublic void add() {//System.out.println(2/0);int a = 10;int b = 20;int sum = a + b;System.out.println(sum);}
}

在这里插入图片描述

1.4相关注解【应用】

  • 注解说明

    注解含义
    @Test表示测试该方法
    @Before在测试的方法前(自动)运行
    @After在测试的方法后(自动)运行
  • 代码示例

import org.junit.After;
import org.junit.Before;
import org.junit.Test;public class JunitDemo02 {@Beforepublic void before(){System.out.println("before");}@Testpublic void test(){System.out.println("test");}@Afterpublic void after(){System.out.println("after");}
}

在这里插入图片描述

2.日志

2.1概述【理解】

  • 概述

    程序中的日志可以用来记录程序在运行的时候点点滴滴。并可以进行永久存储。

  • 日志与输出语句的区别

    输出语句日志技术
    取消日志需要修改代码,灵活性比较差不需要修改代码,灵活性比较好
    输出位置只能是控制台可以将日志信息写入到文件或者数据库中
    多线程和业务代码处于一个线程中多线程方式记录日志,不影响业务代码的性能

2.2日志体系结构和Log4J【理解】

  • 体系结构

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4X8Jlf8H-1676900464194)(.\img\06_日志体系结构.png)]

  • Log4J

    Log4j是Apache的一个开源项目。

    通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件等位置。

    我们也可以控制每一条日志的输出格式。

    通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。

    最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

  • Apache基金会

    Apache软件基金会(也就是Apache Software Foundation,简称为ASF),为支持开源软件项目而办的一个非盈利性组织。

2.3入门案例【应用】

  • 使用步骤

    1. 导入log4j的相关jar包
    2. 编写log4j配置文件
    3. 在代码中获取日志的对象
    4. 按照级别设置记录日志信息
  • 代码示例
    log4j.properties (src目录下)

log4j.rootLogger=info,my,fileAppender
# info改成debug “debug级别的日志” 才会被输出### direct log messages to my ###
log4j.appender.my=org.apache.log4j.ConsoleAppender
log4j.appender.my.ImmediateFlush = true
log4j.appender.my.Target=System.out
log4j.appender.my.layout=org.apache.log4j.PatternLayout
log4j.appender.my.layout.ConversionPattern=%d %t %5p %c{1}:%L - %m%n# fileAppender演示
log4j.appender.fileAppender=org.apache.log4j.FileAppender
log4j.appender.fileAppender.ImmediateFlush = true
log4j.appender.fileAppender.Append=true
log4j.appender.fileAppender.File=D:/log4j-log.log
log4j.appender.fileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.fileAppender.layout.ConversionPattern=%d %5p %c{1}:%L - %m%n

Log4JTest01

package cn.whu.demo01;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class Log4JTest01 {//方式一:使用log4j的api来获取日志的对象//弊端:如果以后我们更换日志的实现类,那么下面的代码就需要跟着改//不推荐使用//private static final Logger LOGGER = Logger.getLogger(Log4JTest01.class);//传入当前类的字节码文件//使用slf4j接口里面的api来获取日志的对象//好处:如果以后更换日志实现类,下面的代码不需要修改//推荐使用private static final Logger LOGGER = LoggerFactory.getLogger(Log4JTest01.class);//也是传入本类的字节码//导包的使用千万注意选择slf4j的apipublic static void main(String[] args) {//1.导入jar包//复制后-》add as library...//2.编写配置文件//直接复制log4j.properties也行//3.在代码中获取日志的对象//上面两种获取方式 推荐第二种//4.按照日志级别设置日志信息LOGGER.debug("debug级别的日志");//日志文件可以控制哪些输出,哪些不输出(有个开关了 多好)LOGGER.info("info级别的日志");LOGGER.warn("warn级别的日志");LOGGER.error("error级别的日志");}}

在这里插入图片描述
配置文件控制了debug不输出

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_260698.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Profinet转ModbusTCP网关连接昆仑通态触摸屏配置案例

本案例是模拟将Modbus TCP 设备数据接入到西门子PROFINET 网络中。 使用设备为西门子 S7-1500 型 PLC, Profinet转ModbusTCP网关。MODBUS 从站昆仑通态触摸屏。 配置方法: 打开博图,新建项目并添加站点。 添加1513PLC。 设置好IP并处于联网状态 导入Pr…

VTK学习笔记(四十)vtk提取单层数据

VTK学习笔记(四十)vtk提取单层数据1. VTK学习笔记(四十)vtk提取单层数据1.1 vtkImageReslice提取单层图像1.2 vtkExtractVOI提取单层图像1. VTK学习笔记(四十)vtk提取单层数据 VTK实现单层图片的提取方法有…

力扣mysql刷题记录

mysql刷题记录 刷题链接https://leetcode.cn/study-plan/sql/?progressjkih0qc mysql冲!mysql刷题记录一. 1699. 两人之间的通话次数题解二、1251. 平均售价题解三. 1571. 仓库经理题解四.1445. 苹果和桔子解五.1193. 每月交易 I题解六.1633. 各赛事的用户注册率题…

Android Spider XX兔 Wechat Cookie 校验 注册案例(二)

声明 此次案例只为学习交流使用,抓包内容、敏感网址、数据接口均已做脱敏处理,切勿用于其他非法用途; 文章目录声明前言一、资源推荐二、任务说明三、App抓包分析四、还原JS加密1、Date类2、MD5类3、组合调用还原 api_token 参数4、execjs模…

Android 基础知识4-2.10 GridLayout(网格布局)详解

一、GridLayout(网格布局)概述 GridLayout 布局是 Android 4.0 以后引入的新布局,和 TableLayout(表格布局) 有点类似,不过它功能更多,也更加好用,最大的特点是放置的组件自动占据网格的整个区域,每个组件的…

《FPGA学习》->呼吸灯

🍎与其担心未来,不如现在好好努力。在这条路上,只有奋斗才能给你安全感。你若努力,全世界都会为你让路。呼吸灯,简而言之就像人类呼吸一样,有节奏的让LED灯从:灭->微微亮->微亮->亮-&g…

K_A12_014 基于STM32等单片机驱动S12SD紫外线传感器模块 串口与OLED0.96双显示

K_A12_014 基于STM32等单片机驱动S12SD紫外线传感器模块 串口与OLED0.96双显示一、资源说明二、基本参数参数引脚说明三、驱动说明IIC地址/采集通道选择/时序对应程序:数据对比:四、部分代码说明1、接线引脚定义1.1、STC89C52RCS12SD紫外线传感器模块1.2、STM32F103…

Leetcode.2257 统计网格图中没有被保卫的格子数

题目链接 Leetcode.2257 统计网格图中没有被保卫的格子数 Rating : 1709 题目描述 给你两个整数 m和 n表示一个下标从 0开始的 m x n网格图。同时给你两个二维整数数组 guards和 walls,其中 guards[i] [rowi, coli]且 walls[j] [rowj, colj]&#xff…

Jmeter常用断言之BeanShell断言详解

BeanShell断言可以使用beanshell脚本来执行断言检查,可以用于更复杂的个性化需求,使用更灵活,功能更强大,但是要能够熟练使用beanshell脚本 在这里除了可以使用beanshell的内置变量外,主要通过 Failure 和 FailureMess…

Dart中的混入类mixin

介绍 Mixin 是一种在多重继承中复用某个类中代码的方法模式。 Mixin 是面向对象程序设计语言中的类,提供了方法的实现。其他类可以访问mixin类的方法、变量而不必成为其子类。 简单来说就是官方设计了一个种可以方便复用的类,不必去实现很多接口。 应…

C++011-C++循环+枚举

文章目录C011-C循环枚举枚举枚举思想枚举举例题目描述 统计因数题目描述 质数判定错误方法一:优化方法1: 用break实现优化优化方法2: sqrt(n)题目描述 水仙花数题目描述 7744问题实现方法1优化方法2题目描述 余数相同问题题目描述 特殊自然数…

视频投票和图文投票之间的差异投票链接制作平台微擎投票

“我的舞台我的梦”网络评选投票_线上小程序的投票方式_视频投票的功能_在线投票程序用户在使用微信投票的时候,需要功能齐全,又快捷方便的投票小程序。而“活动星投票”这款软件使用非常的方便,用户可以随时使用手机微信小程序获得线上投票服…

嵌入物理(PINN)还是基于物理(AD)?

文章目录1. 传统"反演问题"1.1 反演问题是什么1.2 常见反演问题1.3 传统反演问题的困境2. 深度学习优势3. AD inversion 例子3.1 ADsurf3.2 ADseismic关于PINN的内容大家可以直接google PINN (Physical-informed neural network),其主要的目的是用一个神经网络拟合物…

Docker--------Day1

1.简介 您要如何确保应用能够在这些环境中运行和通过质量检测?并且在部署过程中不出现令人头疼的版本、配置问题,也无需重新编写代码和进行故障修复? Docker之所以发展如此迅速,也是因为它对此给出了一个标准化的解决方案-----…

Linux进程概念讲解

1、进程的基本概念在给进程下定义之前,我们先了解一下进程:我们在编写完代码并运行起来时,在我们的磁盘中会形成一个可执行文件,当我们双击这个可执行文件时(程序时),这个程序会加载到内存中&am…

从全局变量寻找到Tomcat回显方式

前言 对于回显的获取主要是在ApplicationFilterChain类的lastServicedRequest / lastServicedResponse两个属性,是使用的ThreadLocal进行修饰的,并且,在执行请求的过程中,通过反射修改属性值,能够记录下当前线程的req…

camera 硬件基本知识

参考博客:1.【Camera专题】Qcom-你应该掌握的Camera调试技巧2_c枫_撸码的日子的博客-CSDN博客_outputpixelclock 2.浩瀚之水_csdn的博客_CSDN博客-深度学习,嵌入式Linux相关知识汇总,Caffe框架领域博主 3.一个早起的程序员的博客_CSDN博客-FPGA,PCIe应用实战,PCI-E…

Introduction to Multi-Armed Bandits——05 Thompson Sampling[3]

Introduction to Multi-Armed Bandits——05 Thompson Sampling[3] 参考资料 Russo D J, Van Roy B, Kazerouni A, et al. A tutorial on thompson sampling[J]. Foundations and Trends in Machine Learning, 2018, 11(1): 1-96. ts_tutorial 项目代码地址: https://githu…

【自然语言处理】主题建模:Top2Vec(理论篇)

主题建模:Top2Vec(理论篇)Top2Vec 是一种用于 主题建模 和 语义搜索 的算法。它自动检测文本中出现的主题,并生成联合嵌入的主题、文档和词向量。 算法基于的假设:许多语义相似的文档都可以由一个潜在的主题表示。首先…

苏宁基于 AI 和图技术的智能监控体系的建设

汤泳,苏宁科技集团智能监控与运维产研中心总监,中国商业联合会智库顾问,致力于海量数据分析、基于深度学习的时间序列分析与预测、自然语言处理和图神经网络的研究。在应用实践中,通过基于 AI 的方式不断完善智能监控体系的建设&a…