实际开发中,单元测试⼀般是由我们Java程序员来完成。我们要对我们⾃⼰写的每⼀个业务⽅法负责任,要保证每个业务⽅法在进⾏测试的时候都能通过
测试类的类名以及每个测试方法的方法名定义规范
测试业务类的时候可以在测试类上测试,也可以在测试方法上测试
第⼀步:引⼊依赖
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.13.2version>
<scope>testscope>
dependency>
第⼆步:编写单元测试类【测试⽤例】,测试⽤例中每⼀个测试⽅法上使⽤@Test注解进⾏标注
测试业务类
//数学业务类
public class MathService {
//求和的业务方法
public int sum(int a, int b){
return a * 10 + b * 10;
}
//相减的业务方法
public int sub(int a, int b){
return a - b;
}
}
测试用例
// 测试⽤例名字规范:你要测试的类名+Test
public class MathServiceTest {
// @Test注解非常重要,被这个注解标注的方法就是一个单元测试方法
@Test
public void testSum(){
MathService mathService = new MathService();
// 获取实际值
int actual = mathService.sum(1, 2);
// 期望值
int expected = 30;
// 加断言进行测试
Assert.assertEquals(expected, actual);
}
@Test
public void testSub(){
MathService mathService = new MathService();
// 实际值
int actual = mathService.sub(10, 5);
// 期望值
int expected = 5;
// 添加断言机制
Assert.assertEquals(expected, actual);
}
}
引⼊⽇志框架的⽬的是为了看清楚MyBatis执⾏的具体SQL
SLF4J(沙拉风):沙拉风是一个日志标准
LOG4J , LOG4J2 , STDOUT_LOGGING …
启⽤MyBatis实现的标准⽇志组件,只需要在mybatis-config.xml核心配置⽂件中添加settings配置可参考mybatis中文手册
DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
settings>
第一步:引入logback的依赖
<dependency>
<groupId>ch.qos.logbackgroupId>
<artifactId>logback-classicartifactId>
<version>1.2.11version>
dependency>
第二步:引入 logback 所必须的 xml 配置文件logback.xml 或者 logback-test.xml
<configuration debug="false">
<property name="LOG_HOME" value="/home"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%npattern>
encoder>
appender>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.logFileNamePattern>
<MaxHistory>30MaxHistory>
rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%npattern>
encoder>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>100MBMaxFileSize>
triggeringPolicy>
appender>
<logger name="com.apache.ibatis" level="TRACE"/>
<logger name="java.sql.Connection" level="DEBUG"/>
<logger name="java.sql.Statement" level="DEBUG"/>
<logger name="java.sql.PreparedStatement" level="DEBUG"/>
<root level="DEBUG">
<appender-ref ref="STDOUT"/>
<appender-ref ref="FILE"/>
root>
configuration>
从Spring5之后,Spring框架支持集成的日志框架是Log4j2
第一步:引入Log4j2的依赖
<dependency>
<groupId>org.apache.logging.log4jgroupId>
<artifactId>log4j-coreartifactId>
<version>2.19.0version>
dependency>
<dependency>
<groupId>org.apache.logging.log4jgroupId>
<artifactId>log4j-slf4j2-implartifactId>
<version>2.19.0version>
dependency>
第二步:引入Log4j2所必须的 xml 配置文件log4j2.xml
<configuration>
<loggers>
<root level="DEBUG">
<appender-ref ref="spring6log"/>
root>
loggers>
<appenders>
<console name="spring6log" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss SSS} [%t] %-3level %logger{1024} - %msg%n"/>
console>
appenders>
configuration>
// 第一步:获取FirstSpringTest类的日志记录器对象,也就是说只要是FirstSpringTest类中的代码执行记录日志的话,就输出相关的日志信息
Logger logger = LoggerFactory.getLogger(FirstSpringTest.class);
// 第二步:记录日志,根据不同的级别来输出日志,级别低的包含级别高的
logger.info("我是一条消息");
logger.debug("我是一条调试信息");
logger.error("我是一条错误信息");