1. ホーム
  2. java

Mavenでユニットテスト中にtempファイルに書き込むための正しい方法は何ですか?

2023-11-08 08:15:39

質問

私は、ファイルシステムにファイルを書き込むユニットテストを書きました。パスが与えられていない場合、作業ディレクトリに書き込みます。

では、ターゲットディレクトリに書き込む正しい方法は何でしょうか。おそらく、ターゲット ディレクトリの中のディレクトリでしょうか。

もし私がごく単純に target/ を指定すると、projects ターゲットではなく、親プロジェクトターゲットに書き込まれます。

アップデイト : 実はテスト終了後、ファイルが欲しいのです。ファイルは、サードパーティに送信する必要があるサードパーティのための抽出フォーマットのためのものです。テストは、ファイルのフォーマットが再承認のために変更された場合のみ実行できるように、オン/オフを切り替えることができます。ファイルがどこに行くかは大きな問題ではありませんが、簡単に見つけられるものが欲しいです。

どのように解決するのですか?

あなたは TemporaryFolder JUnitの@Ruleで説明されているように ここに

<ブロッククオート

この TemporaryFolder は、システム・プロパティ java.io.tmpdir で指定されたデフォルトの一時ファイル・ディレクトリにフォルダを作成します。メソッドnewFileは一時ディレクトリに新しいファイルを作成し、newFolderは新しいフォルダーを作成します。

テストメソッドが終了すると、JUnitは自動的にTemporaryFolder内とそれを含むすべてのファイルとディレクトリを削除します。JUnitは、テストが成功しても失敗しても、リソースを削除することを保証します。


質問後の更新

で使用する作業ディレクトリを変更することができます。 maven-surefire-plugin .

<plugins>
    [...]
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.12.3</version>
        <configuration>
          <workingDirectory>${project.build.directory}</workingDirectory>
        </configuration>
      </plugin>
    [...]
</plugins>

この作業ディレクトリは、テストに必要な任意のディレクトリに変更することができます。 ${project.build.directory}/my_special_dir/ .

surefire プラグインの作業ディレクトリは、実行中のテストにのみ影響し、maven によって実施されるテストにのみ影響します。IDE 内からテストを実行する場合、作業ディレクトリは他のものになります。