1

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() 呼び出しがすべてのキーを返すため、プロパティ ファイルが確実に読み取られているように見えます。ただし、文字列をキー値に設定するわけではありません。まだトラブルシューティングを行っていますが、アイデアは役に立ちます

4

2 に答える 2

1

交換

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

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

& もう一度テストします。問題が解決することを願っています

于 2012-05-11T18:39:01.653 に答える
0

あなたのプロパティファイルが見つからないと思います。それが問題全体です。

新しい FileInputStream を作成する代わりに、以下のコード行を使用してみてください

properties.load(this.getClass().getResourceAsStream("xxx.properties"));
于 2012-05-11T18:48:16.420 に答える