这几天在看Hikari、Druid连接池。按照网上代码写Junit测试类。当时代码如下:
package com.ceaning.crudp.utils;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import javax.sql.DataSource;
import java.util.HashMap;
import java.util.Map;
@SpringBootTest
public class JwtUtilsTest {
@Autowired
private DataSource dataSource;
@Test
public void testConnection() throws Exception{
System.out.println(dataSource.getConnection());
}
}
运行提示:
java.lang.NullPointerException
当时搞整了好久,都没有找出原因,也问过Java的同事,也没想原因。今天无意中在网上看到关于这个得文章(https://blog.youkuaiyun.com/owlion/article/details/128020387),发现竟然是注解@Test得问题。
原我引用得是
import org.junit.Test;
更换引用
import org.junit.jupiter.api.Test;
得以解决。坑啊,赶紧记录下。
我赶紧试试两个有什么不同,发现
org.junit.Test 适用于当前类的方法测试,不依赖spring服务,直接执行@Test注解的方法;
org.junit.jupiter.api.Test 依赖spring服务,当引用此路径,spring服务先启动,在执行注解@Test的方法。
文章讲述了作者在测试Hikari和Druid连接池时遇到的NullPointerException问题,原来是由于使用了错误的@Test注解导致。将org.junit.Test更改为org.junit.jupiter.api.Test后,问题得到解决。作者发现,org.junit.Test不依赖Spring服务,而org.junit.jupiter.api.Test则需要Spring环境。这是一个关于Java单元测试和Spring集成测试的常见陷阱。
504

被折叠的 条评论
为什么被折叠?



