gpt4 book ai didi

java - 从测试运行时 getResourceAsStream ("file") 在哪里搜索?

转载 作者:搜寻专家 更新时间:2023-11-01 03:18:27 24 4
gpt4 key购买 nike

我正在努力创建一个测试来验证加载属性文件的 ServletListener。我在运行该应用程序时进行了测试,它工作正常并且在 classpath 中找到了该文件。但我不知道如何为它创建测试。我的想法是创建一个带有测试属性的临时文件,然后验证该属性是否已放入 System properties。但是我总是无法在正确的位置创建文件。

我试过在 /target/test-classes 或直接在应用程序的根目录中创建文件,但它从未找到它。有什么想法吗?

这是我要测试的代码:

public class PropertyReadingListener implements ServletContextListener {

public static final String PROFILES_PROPERTIES = "profiles.properties";

@Override
public void contextDestroyed(ServletContextEvent event) {
}

@Override
public void contextInitialized(ServletContextEvent event) {
Properties propsFromFile = new Properties();
try {
propsFromFile.load(getClass().getResourceAsStream(PROFILES_PROPERTIES));
} catch (final Exception e) {
log.warn("Unable to find {}, using default profile", PROFILES_PROPERTIES);
}
propsFromFile.stringPropertyNames().stream()
.filter(prop -> System.getProperty(prop) == null)
.forEach(prop -> System.setProperty(prop, propsFromFile.getProperty(prop)));
}
}

谢谢。

最佳答案

假设您使用的是 maven,将您的属性文件放在这里:

src/test/resources/foo.properties

maven 资源插件会将文件的(可能已过滤的)副本放在

target/test-classes/foo.properties

test-classes 目录在类路径中,因此您可以像这样引用文件(注意文件名前面的斜杠):

... getResourceAsStream("/foo.properties");

关于java - 从测试运行时 getResourceAsStream ("file") 在哪里搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39416370/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com