2012-05-11 15 views
1

私は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()呼び出しがすべてのキーを返すので、プロパティファイルが確実に読み込まれているように見えます。しかし、文字列をキー値に設定するのではありません。それでも

+2

のラインの下に使用しようとするパスが正しいかどうかはチェックしましたか? 'new FileInputStream(" xxx.properties ")' – evanwong

答えて

1

が再び

properties.load(new InputStreamReader(Logic.class.getResource("xxx.properties").openStream(), "UTF8")); 

&テストで

properties.load(new FileInputStream("xxx.properties")); 

を交換トラブルシューティングが、任意のアイデアは参考になります。私はそれがあなたの問題を解決することを願っています

+0

私は@ mprabhatの提案だけでなく、いくつかの異なる方法(インポート/メソッド呼び出しの並べ替え)を試みましたが、役に立たなかった。私はそれが私のプログラムの中で何かの問題だと思っていますが、私はあなたの提案を忘れていません。何か他のものがあると思うなら、私はあなたのフィードバックに感謝します。その間に、私は定期的に他の提案を見るためにここに戻り、受け入れられるとマークすることを望みます( – Chris

+0

)。間違っていました!これは、私のプロパティファイルのパスのタイプミスと、そのファイルを修正した後のプロパティのロード方法の組み合わせです。あなたの提案はついにトリックをしました、ありがとう! – Chris

0

私はあなたのプロパティファイルが見つからないと思うことが問題全体です。代わりに新しいのFileInputStreamを作成する

はコード

properties.load(this.getClass().getResourceAsStream("xxx.properties")); 
関連する問題