Spring对日志框架和测试的支持
spring5框架自带了通用的日志封装,也可以整合自己的日志
- spring移除了 LOG4jConfigListener,官方建议使用log4j2
- spring5整合log4j2
一、导入log4j2依赖
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>2.17.1</version> <scope>test</scope> </dependency>
二、在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 - %augus%n" /> </Console> </Appenders> <Loggers> <Root level="debug"> <AppenderRef ref="Console" /> </Root> </Loggers> </Configuration>
三、spring5关于测试工具的支持(整合junit4)
1.导入所需的依赖
<!-- junit4单元测试 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> <!-- spring-test 测试支持包 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>5.3.22</version> <scope>test</scope> </dependency>
2.测试代码编写方式
读取配置文件的方式就可以采用Junit中提供的注解来完成了,但是注意我这里是基于之前的类,需要将之前零xml实现的配置类SpringConfig禁用,不然会干扰
import com.augus.service.AccountService; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class)// 指定测试支持类 @ContextConfiguration("classpath:applicationContext.xml")// 指定核心配置文件位置 public class Test1 { @Autowired private AccountService accountService; @Test public void testTransaction(){ //调用方法 int rs = accountService.transfer(1, 2, 500.0); System.out.println(rs); }
四、spring5关于测试工具的支持(整合junit5)
1.导入依赖的
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api --> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>5.8.2</version> <scope>test</scope> </dependency>
2.测试代码
import com.augus.service.AccountService; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; // 使用复合注解 @SpringJUnitConfig(locations = "classpath:applicationContext.xml") public class Test1 { @Autowired private AccountService accountService; @Test public void testTransaction(){ //调用方法 int rs = accountService.transfer(1, 2, 500.0); System.out.println(rs); } }