21_Spring_日志框架和测试支持
![](https://img2023.cnblogs.com/blog/2531222/202303/2531222-20230304132016053-592433973.gif)
![](https://img2023.cnblogs.com/blog/2531222/202303/2531222-20230304132016053-592433973.gif)
![](https://img2023.cnblogs.com/blog/2531222/202303/2531222-20230304132016053-592433973.gif)
![](https://img2023.cnblogs.com/blog/2531222/202303/2531222-20230304132016053-592433973.gif)
![](https://img2023.cnblogs.com/blog/2531222/202303/2531222-20230304132016053-592433973.gif)
![](https://img2023.cnblogs.com/blog/2531222/202303/2531222-20230304132016053-592433973.gif)
spring5框架自带了通用的日志封装,也可以整合自己的日志
1)spring移除了 LOG4jConfigListener,官方建议使用log4j2
2)spring5整合log4j2
导入log4j2依赖
<!--log4j2 依赖-->
<!--<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.14.0</version>
</dependency>-->
<!--slf4-impl 包含了log4j2 依赖-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.14.0</version>
<scope>test</scope>
</dependency>
![](https://img2023.cnblogs.com/blog/2531222/202303/2531222-20230304132016053-592433973.gif)
![点击并拖拽以移动](https://img2023.cnblogs.com/blog/2531222/202303/2531222-20230304132016053-592433973.gif)
在resources目录下准备log4j2.xml的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="DEBUG">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" />
</Console>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="Console" />
</Root>
</Loggers>
</Configuration>
![](https://img2023.cnblogs.com/blog/2531222/202303/2531222-20230304132016053-592433973.gif)
![点击并拖拽以移动](https://img2023.cnblogs.com/blog/2531222/202303/2531222-20230304132016053-592433973.gif)
spring5关于测试工具的支持
整合junit4
依赖的jar
<!--Junit4单元测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
<!--spring test测试支持包-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.3.5</version>
<scope>test</scope>
</dependency>
![](https://img2023.cnblogs.com/blog/2531222/202303/2531222-20230304132016053-592433973.gif)
![点击并拖拽以移动](https://img2023.cnblogs.com/blog/2531222/202303/2531222-20230304132016053-592433973.gif)
测试代码编写方式
package com.msb.test;
import com.msb.config.SpringConfig;
import com.msb.service.AccountService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.lang.Nullable;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
* @Author: Ma HaiYang
* @Description: MircoMessage:Mark_7001
*/
@RunWith(SpringJUnit4ClassRunner.class)// 指定测试支持类
@ContextConfiguration("classpath:applicationContext.xml")// 指定核心配置文件位置
public class Test2 {
@Autowired // 注入要获取的bean
private AccountService accountService;
@Test()
public void testTransaction(){
int rows = accountService.transMoney(1, 2, 100);
System.out.println(rows);
}
}
![](https://img2023.cnblogs.com/blog/2531222/202303/2531222-20230304132016053-592433973.gif)
![点击并拖拽以移动](https://img2023.cnblogs.com/blog/2531222/202303/2531222-20230304132016053-592433973.gif)
整合junit5
依赖的jar
<!--junit5单元测试-->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.7.0</version>
<scope>test</scope>
</dependency>
![](https://img2023.cnblogs.com/blog/2531222/202303/2531222-20230304132016053-592433973.gif)
![点击并拖拽以移动](https://img2023.cnblogs.com/blog/2531222/202303/2531222-20230304132016053-592433973.gif)
测试代码编写方式
package com.msb.test;
import com.msb.service.AccountService;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
/**
* @Author: Ma HaiYang
* @Description: MircoMessage:Mark_7001
*/
/*使用ExtentWith和ContextConfiguration注解*/
/*@ExtendWith(SpringExtension.class)
@ContextConfiguration("classpath:applicationContext.xml")*/
// 使用复合注解
@SpringJUnitConfig(locations = "classpath:applicationContext.xml")
public class Test3 {
@Autowired // 注入要获取的bean
private AccountService accountService;
@Test
public void testTransaction(){
int rows = accountService.transMoney(1, 2, 100);
System.out.println(rows);
}
}
![](https://img2023.cnblogs.com/blog/2531222/202303/2531222-20230304132016053-592433973.gif)
![点击并拖拽以移动](https://img2023.cnblogs.com/blog/2531222/202303/2531222-20230304132016053-592433973.gif)