您的位置:首页 > 其它

Junit(单元测试)与Log4j(日志)的搭配

2017-08-10 18:17 211 查看

junit与Log4j搭配

首先在使用junit与Log4j的时候先映入jar包(jar包参照上篇,项目结构图所示.)

1.为什么学习junit与Log4j

木有使用Junit的时候,一个类里面只能有一个main方法,而且测试的时候只能运行main方法,如果说只想测试其中的一个方法,注释掉其它的方法.

期望:

当前类里面的方法想写几个就写个,想测试其中的一个方法,只需要在指定的方法上面右击,选择执行就可以了

java的main方法是入口函数,被打破了.

在执行目标方法的时候,先执行a(指定)方法

Junit对main方法做了封装

2.如图所示操作



3.注意:

a. 一定要在想执行的方法上右击,选择junit test.

b. 如果在类上面右击了junit Test会把当着类里面的顶着@test的方法都执行一遍.

c. 方法必须是public void 名称(随便起) ,不能有参数.

4. 在java代码中如何写?(仔细看是加注释了,@After, @Test,@Before)

示例:

package com.bjsxt.mybatis.test;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

/**
* 有Junit的时候如何做
* @author WangshSxt
*
*/
public class JunitTest
{
/**
* 初始化
*
* 在执行Junit方法之前执行
*/
@Before
public void init()
{
System.out.println("=====init=======");
Logger logger = LogManager.getLogger();
}

/**
* 销毁,关闭
*
*/
@After
public void after()
{
System.out.println("=====after======");
}

/**
* 第一个测试方法
*/
@Test
public void test01()
{
System.out.println("======test01====");
logger.trace("==trace==");
logger.debug("===debug=");
/* 字符串拼接
* {}:占位符,
* 参数:第二个开始,一一的标签占位符的位置
* 将参数的值放到占位符的位置上,参数的下标值-1
*  */
logger.info("==info==id:{},name:{},age:{},=",1,"测试",20);
logger.warn("==warn==");
logger.error("===error=");

try
{
/* 异常记录日志 */
String str = null ;
str.toString() ;
} catch (Exception e)
{
/*e.printStackTrace();*/
/* log4j记录异常
* 异常的对象,e必须放到参数的最后一个
*  */
logger.error("报错了:id:{}",10,e);
}
}

/**
* 第一个测试方法
*/
@Test
public void test02()
{
System.out.println("======test02====");
}
}


5. 配置文件_名称必须是log4j2.xml。

6. Log4j标准版(入门)

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
</Console>
</Appenders>
<Loggers>
<!-- 级别优先级:
trace:最低的,
debug:一般打印一些提示信息:给开发人员看的
info:提示信息:一般是给运维看的
warn:警告一下
error:代码报异常,把异常信息记录下来
-->
<Root level="info">
<AppenderRef ref="STDOUT"/>
</Root>
</Loggers>
</Configuration>


7.Log4j高级版

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
</Console>

<!-- 系统打印日志
name:名字,唯一噢
fileName:文件的路径,默认放到classpath中
filePattern:文件名的规则
%d{yyyy-MM-dd}:日期
i:如果当天的文件超出了最大值(大小),重新改名,从1开始,依次1
与SizeBasedTriggeringPolicy相响应,表示每1m一个文件
-->
<RollingRandomAccessFile name="System"
fileName="logs/system.log" filePattern="logs/system_%d{yyyy-MM-dd}_%i.log">
<PatternLayout
pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n" />
<Policies>
<TimeBasedTriggeringPolicy interval="1"
modulate="true" />
<!--
每一个文件的大小
-->
<SizeBasedTriggeringPolicy size="1M" />
</Policies>
</RollingRandomAccessFile>
</Appenders>

<Loggers>
<!-- 级别优先级:
trace:最低的,
debug:一般打印一些提示信息:给开发人员看的
info:提示信息:一般是给运维看的
warn:警告一下
error:代码报异常,把异常信息记录下来
-->
<Root level="info">
<AppenderRef ref="STDOUT"/>

<!-- 引入日志记录文件的标签配置名称 -->
<AppenderRef ref="System"/>
</Root>
</Loggers>
</Configuration>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  junit