Fork me on GitHub

java学习----Junit&Log4j

目录

  1.介绍Junit

  2.Junit的使用

  3.介绍log4j

  4.log4j的使用

一、介绍Junit

  Junit是一个java语言单元测试的框架,这款框架旨在对java程序进行单元测试,并且写好的方法不需要在主函数中进行调用就可测试。

  单元测试也就是常说的白盒测试。

  

二、Junit的使用

  Junit的使用非常简单,大致可分为一下步骤

  1.导入jar

    jar包地址如下http://www.mvnjar.com/junit/junit/4.12/detail.html

  2.编写测试方法

    测试方法有如下特征:

      1.不能有返回值

      2.不能有参数

  3.在测试方法上使用注解

    常用的junit注解有:

      @Test:测试的方法注解

      @Ignore:不被测试的方法注解

      @Before:每次测试之前的方法注解,会在每一个测试方法之前运行(如果有多个测试方法则会多次运行)

      @After:每次测试之后的方法注解,会在每一个测试方法之后运行(如果有多个测试方法则会多次运行)

      @BeforeClass:在所有测试方法测试之前运行,只会在还没有进行测试的方法之前运行,优先级是最高的(只会运行一次)

      @AfterClass:在所有测试方法测试之后运行,只会在所有测试方法之后运行,优先级是最高的(只会运行一次)

  4.进行Junit单元测试

    Junit单元测试demo如下:

      

复制代码
package com.demo.junit;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;

import junit.framework.Assert;

public class Cal {
    @BeforeClass
    public static void init(){
        System.out.println("初始化完毕");
    }
    @AfterClass
    public static void destroy(){
        System.out.println("销毁完毕");
    }
    @Ignore
    public void test1(){
        System.out.println("test1");
    }
    @Test
    public void test2(){
        System.out.println("test2");
        Assert.assertEquals(2, 3);
    }
    @Test
    public void test3(){
        System.out.println("test3");
        Assert.assertTrue(false);
    }
}
复制代码

 

3、介绍log4j

  ApacheLog4j是一个基于java的日志记录工具。

  程序中用户的某些操作可以用日志记录下来,程序异常也可以用日志记录下来。

  这样的好处在于----程序出错了,可以直接查看日志文件进行错误定位。

 

4、log4j的使用

  日志的结构:

    1、日志优先级

       OFF FATAL> ERROR >WARN >INFO>DEBUG  +   ALL

 

    2、日志输出目的地(Appender)

      ConsoleAppender:输出到控制台
      FileAppender:输出到文件
      DailyRollingAppender:每天产生一个日志文件
      RollingFileAppender:日志文件产生到一定的大小后,再自动创建新的日志文件。

    3、日志的输出格式

      HTMLPattern HTML格式
      SimpleLayout基本格式(日志级别和信息)
      PatterLayout灵活指定

      具体的输出格式
        %n换行
        %m日志的内容
        %p日志的级别priority
        %l日志发生的位置location
        %d日志发生的时间
        %t日志发生的线程名
        %r表示从启动应用到写入该日志花费的毫秒数

  

  使用步骤:

      1.导入jar

        jar包地址:http://www.mvnjar.com/com.opsbears.webcomponents.application.slf4j/log4j/1.0.0-alpha13/detail.html

      2.创建日志配置文件

        在项目的src下创建名为log4j.properties的文件

          一下是一个自定义的一个模板

          

复制代码
#定义log4j的根(制定日志级别和Appender)
log4j.rootLogger = INFO,A1,A2,A3

#定义日志目的地1 控制台Appender
log4j.appender.A1 = org.apache.log4j.ConsoleAppender

#定义A1的输出格式(灵活的输出格式)
log4j.appender.A1.layout = org.apache.log4j.PatternLayout

#定义A1具体的输出格式
log4j.appender.A1.layout.ConversionPattern = [%p](%l) -->%m[%r][%t]--%d%n


#定义日志目的地2 控制台Appender
log4j.appender.A2 = org.apache.log4j.FileAppender

#定义A2的输出格式(灵活的输出格式)
log4j.appender.A2.layout = org.apache.log4j.PatternLayout

#定义A2具体的输出格式
log4j.appender.A2.layout.ConversionPattern = [%p](%l) -->%m[%r][%t]--%d%n

#定义日志文件的路径
log4j.appender.A2.file = F:\\log4j\\debug.log




#定义日志目的地3 控制台Appender
log4j.appender.A3 = org.apache.log4j.DailyRollingFileAppender

#定义A2的输出格式(灵活的输出格式)
log4j.appender.A3.layout = org.apache.log4j.PatternLayout

#定义A2具体的输出格式
log4j.appender.A3.layout.ConversionPattern = [%p](%l) -->%m[%r][%t]--%d%n

#定义日志文件的路径(单天的以1.log命名,之前的文件以日期格式命名)
log4j.appender.A3.file = F:\\log4j\\1.log
#定义日志文件的命名规范    之前的
log4j.appender.A3.DatePattern = yyyy-MM-dd'.log'
#定义日志文件的追加模式  (文件追加) 
log4j.appender.A3.Append = true
复制代码

      日志模板可以在官方下载

      3.日志记录

        记录日志需要使用Logger对象

        

复制代码
package com.demo.log4j;

import org.apache.log4j.Logger;
import org.junit.Test;

public class App {
    Logger logger = Logger.getLogger(this.getClass());
    @Test
    public void run() {
        logger.info("info信息");
        logger.debug("debug信息");
        try {
            Object obj = null;
            obj.toString();
            
            logger.warn("这是一个日志");
        } catch (Exception e) {
            logger.error(e.getMessage());
            logger.fatal(e.getMessage());
        }
        
    }
}
Log4j记录日志demo
复制代码

 

 

 

  

posted @   Banana_Fish  阅读(940)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!
点击右上角即可分享
微信分享提示