100 ほどのテストを自動的に実行する Java プログラムを作成しています。プログラム自体は制作の最終段階にあり、私の上司は、ハードコードされた変数をすべて取り出して .properties ファイルに保存するように求めています。現在、Logic.java と Tests.java の 2 つの 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
}
プロパティをインポートし、@Before メソッドで Logic.java の文字列 vals を設定する必要があります。これは、Logic の新しいインスタンスを作成していない (または私が信じている) ためですが、文字列の値を見つけようとすると (文字列値をログ ファイルに書き込みます)、そのファイルにはテキストがありません。ログ ファイルの書き込みが機能するという事実を知っているので、文字列はプロパティ値に設定されていません。プロパティ ファイルも正しく記述されています。必要に応じて詳細情報を提供できます。ありがとう!
編集: したがって、一連のトラブルシューティングの後、properties.keys() 呼び出しがすべてのキーを返すため、プロパティ ファイルが確実に読み取られているように見えます。ただし、文字列をキー値に設定するわけではありません。まだトラブルシューティングを行っていますが、アイデアは役に立ちます