私は100回程度のテストを自動的に実行するJavaプログラムを構築しています。プログラム自体は生産の最終段階にあり、私の上司はすべてのハードコーディングされた変数を取り出して.propertiesファイルに保存したいと考えています。今、私は2つのJavaファイルLogic.javaとTests.javaとプロパティファイルxxx.propertiesを持っています。しかし、コード(Tests.javaのJUnitテスト)を実行すると、プロパティがロードされることはありません。関連するコードは次のとおりプロパティファイルの読み込みに問題があります
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.javaで
Logic logic = new Logic();
@Before
public void before() {
logic.importProperties();
}
@Test
public void test1() {
logic.testMethod();
}
//More tests
}
IプロパティをインポートしLogic.javaの文字列ヴァルスを設定しなければなりません@BeforeメソッドではLogicの新しいインスタンスを作成していないので、文字列の値を検索しようとすると(文字列値をログファイルに書き込む)、tファイル内のext。私は、ログファイルの書き込みが機能するので、文字列がプロパティ値に設定されていないことを知っています。私のプロパティファイルも正しく書かれているので、必要に応じてさらに情報を提供することができます。ありがとう!
編集:トラブルシューティングの後、properties.keys()呼び出しがすべてのキーを返すので、プロパティファイルが確実に読み込まれているように見えます。しかし、文字列をキー値に設定するのではありません。それでも
のラインの下に使用しようとするパスが正しいかどうかはチェックしましたか? 'new FileInputStream(" xxx.properties ")' – evanwong