单元测试Debug疑似断点无效的问题

在进行单元测试时,突然出现了debug 错误

1. 疑似断点无效

通过设置断点,但是怎么都运行不到断点处,所以博主以为断点失效了,网上各种找断点失误原因(相信以后也会碰到的)

通过在测试类方法体的第一行添加:

int intNum = 1; 

在这里插入图片描述

测试断点,突然发现并不是断点失效,而是自己第一行代码就出错了,因此顺利解决第1个问题

2. 类静态方法错误

类的静态变量,静态方法因为是和类一起加载进内存的,因此,静态方法的错误一定优先对象方法的错误抛出,对象方法属于对象,只有在被对象调用时才会抛出

静态代码块

定位到了第2个类静态方法问题

3. java web 工程 读取资源文件路径问题

通过代码拆分:把简化的代码用多个引用变量逐一拆分,比如

properties.load(Druid.class.getClassLoader().getResourceAsStream("druid.properties"));

拆成

ClassLoader classLoader = Druid.class.getClassLoader();
InputStream inputStream = classLoader.getResourceAsStream("druid.properties");
properties.load(inputStream);

通过Step Into (F7)调试 (点击要into的方法体)
在这里插入图片描述
发现我的inputStream得到的值是null

说明类并没有成功读取到资源文件"druid.properties",而我的druid.properties路径为src/ druid.properties。

从网上看到大神的解释:

第1种类加载器加载资源文件的方式:
class.getClassLoader().getResourceAsStream(String name)

默认从==classpath(即“工程根目录/ target/classes”)==中找文件.
name必须采用相对于classpath,即当前类package文件的相对路径,不能带"/",否则会抛空指针。

而JVM在自动编译时把 "工程根目录/src/main/ resources "内的文件,拷贝一份到classpath目录下,因此把druid.properties放在 工程根目录/src/main/resources下,编译后,源码中的相对路径“druid.properties”对应的绝对路径就是**“工程根目录/target/classes/druid.properties”**

InputStream inputStream = Druid.class.getClassLoader().getResourceAsStream("druid.properties");

成功加载资源文件,搞定了这个错误!

补充

另外,补充个第二种类加载器加载资源文件的方式:
class.getResourceAsStream(String name)
name必须采用以classpath为根目录的绝对路径,绝对路径以"/"作为路径头,所以

 InputStream inputStream = Druid.class.getResourceAsStream("/druid.properties");

参考

Java项目读取resources资源文件路径
【IntelliJ IDEA】Debug调试的使用记录

猜你喜欢

转载自blog.csdn.net/weixin_45549370/article/details/114825156