本文为霍格沃兹测试学院优秀学员学习笔记,进阶学习文末加群。
在日常自动化测试开发工作中,经常要使用配置文件,进行环境配置,或进行数据驱动等。我们常常把这些文件放置在resources
目录下,然后通过
getResource
、ClassLoader.getResource
和getResourceAsStream()
等方法去读取。经常看到有不少同学在读取配置文件时踩坑,本人也是一路踩坑摸索过来,这里做一个简要梳理,供大家参考。
一、何为 classpath ?
读取资源文件最关键的就是找到文件的位置,归根结底就是找路径,而怎么找,在哪找就是个问题。这其中和 classpath
有很大关系,因此我们先了解下
classpath
的概念,帮助理清思路。
- 我们用
Java
编写的文件都是.java
文件,而想要运行,还需将其编译成.class
字节码文件才可被JVM
运行;这就需要JVM
先找到对应的.class
才行,这也就是要找到对应的classpath
。 JVM
会在编译项目时,会主动将.java
文件编译成.class
文件 并和resources
目录下的静态文件一起放在target/classes
(如果是test
下的类,便会放于/target/test-classes
下)目录下;
现有工程目录如下:
编译后进入 target
目录下查看如下:
二、class.getResource()
先来看 getResource
的用法
先分别执行如下测试代码,打印带有"/"
和不带"/"
的path
import org.junit.jupiter.api.Test;
public class ResourceTestDemo {
@Test
void getResourceTest(){
S