我正在构建一个Java程序,该程序将自动运行一百次左右的测试。程序本身正处于生产的最后阶段,我的老板想让我去掉所有硬编码的变量并将它们存储在一个.properties文件中。现在我有两个java文件Logic.java和Tests.java,以及一个属性文件xxx.properties。但是,当我运行代码(Tests.java中的JUnit测试)时,看起来属性永远不会被加载。相关代码如下:无法从属性文件中读取
在Logic.java
Properties properties = new Properties();
String val1;
String val2;
...
String last_val;
public void importProperties() {
try {
properties.load(new FileInputStream("xxx.properties"));
val1 = properties.getProperty("val1-property-name");
...
lastVal = properties.getProperty("lastVal-property-name");
} catch (Exception e) {
e.printStackTrace();
}
}
public void test() {
importProperties();
//Testing code follows, several method calls referencing val1, val2, etc
}
在Tests.java
Logic logic = new Logic();
@Before
public void before() {
logic.importProperties();
}
@Test
public void test1() {
logic.testMethod();
}
//More tests
}
我要导入的属性和Logic.java设置字符串瓦尔斯在@Before方法中,因为我没有创建Logic的新实例(或者我相信),但是当我尝试查找字符串的值(将字符串值写入日志文件)时,没有在所述文件中分机。我知道日志文件的写作工作,所以字符串没有被设置为它们的属性值。我的财产文件也是正确书写的,如有必要,我可以提供更多信息。谢谢!
编辑:所以经过一系列的故障排除之后,它看起来好像属性文件肯定被读取,因为一个properties.keys()调用返回所有的键。然而,这并不是将字符串设置为关键值。尽管如此故障排除,但任何意见将是有益
行你检查的路径是正确的? '新的FileInputStream(“xxx.properties”)' – evanwong