我在我的junit中使用以下代码来获取软件包的目录.
String pkgname = "com.acn.omi.util";
String relPath = pkgname.replace('.', '/');
URL resource = ClassLoader.getSystemClassLoader().getResource(relPath);
但是此代码在target / test-classes文件夹中搜索包含src / test / java源文件夹中的类的包,因此无法找到位于我的源文件夹(src / main / java)中的包.
我如何从junit中获取位于文件包中的文件.
我的目的是从该文件夹加载所有类,并使用反射修改其字段.
解决方法:
您可以尝试使用以下代码获取类的位置
String pkgname = "com.acn.omi.util";
String relPath = pkgname.replace('.', '\\');
String workingDirectory = System.getProperty("user.dir");
String requiredDirectory = workingDirectory + "\\" + "src\\test\\java"
+ relPath;
URL resource = ClassLoader.getSystemClassLoader().getResource(
requiredDirectory);
这将为您获取测试类的完整位置.
标签:reflection,junit,java,classloader
来源: https://codeday.me/bug/20191120/2042018.html