12

私のプロジェクト構造は次のようになります

project/
       src/main/
               java/ ...
               resources/
                         definitions.txt
               test/
                    CurrentTest.java
               resources/ ...

私のテストでは、開く必要がありますdefinitions.txt

そうです

 @Test
 public void testReadDesiredDefinitions() throws PersistenceException, IOException {
        final Properties definitions = new Properties();
        definitions.load(new ResourceService("/").getStream("desiredDefinitions"));
        System.out.println(definitions);
 }

これを実行すると、

java.lang.NullPointerException
    at java.util.Properties$LineReader.readLine(Properties.java:418)
    at java.util.Properties.load0(Properties.java:337)
    at java.util.Properties.load(Properties.java:325)

このテキストファイルを読むにはどうすればよいですか?

ありがとう

4

4 に答える 4

14

通常、単体テストの「現在のディレクトリ」はプロジェクト ディレクトリなので、次のようにします。

File file = new File("src/main/resources/definitions.txt");

ファイルからプロパティをロードします。

definitions.load(new FileInputStream(file));

これが機能しない場合、または現在のディレクトリが何であるかを確認したい場合は、パスを出力するだけで、現在のディレクトリが何であるかが明らかになります。

System.out.println(file.getAbsolutePath());
于 2012-10-25T17:35:44.780 に答える
1

Class#getResourceAsStreamを利用して、リソース ファイルへのストリームを簡単に作成できます。

definitions.load(getClass().getResourceAsStream("/main/java/resources/definitions.txt"));

location パラメーターは、プロジェクト ベースに関する相対ファイル パスである必要があります (私の推測ではメインでした)。

于 2012-10-25T17:37:47.353 に答える
0

ファイルfile=new File( "../src/main/resources/definitions.txt");

于 2012-10-25T17:39:41.743 に答える
0

resourcesディレクトリがソース フォルダーの場合は、正しいパスとして使用できます/resources/definitions.txt

私は知りませんResourceServiceが、これはうまくいくはずです:

final Properties definitions = new Properties();
definitions.load(getClass().getResourceAsStream("/resources/definitions.txt"))
于 2012-10-25T17:36:38.463 に答える