Eclipse で JUnit 起動構成の作業ディレクトリをデフォルトにするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/119832

質問

Java コード (テスト コードではありません) は現在のディレクトリからファイルを読み取ります。つまり、コードを実行するたびに作業ディレクトリを適切に設定する必要があります。

Eclipse 内から JUnit テストを起動すると、起動構成が自動的に作成されます。問題は、その起動設定の作業ディレクトリが常にデフォルトでルート プロジェクト ディレクトリであることです。これは常に間違っており、テストは失敗します。起動設定ダイアログを開いて作業ディレクトリを変更し、テストを再起動する必要があります。これは非常に迷惑です。単一のテスト メソッドを実行する場合も同じことが発生します。

私はすでにこれらを検討しました:

  • テスト コードから現在のディレクトリを変更する - 設計上不可能です。
  • ファイルを開くときに、親ディレクトリのパラメータを渡します。これは多くの場所に影響するため、非常に困難です。
  • 使用 起動設定をコピーする Eclipse の機能を使用して、すでに正しい作業ディレクトリが設定されている既存の起動構成から新しい起動構成を作成します。「このテスト/メソッドを JUnit テストとして実行する」を呼び出すだけで、テストまたはテスト メソッドをすぐに起動したいので、これはここではあまり意味がありません。

全体として、これはコードではなく Eclipse の責任のようです。

を設定する方法はありますか デフォルト の作業ディレクトリ すべての未来、新たに創造された JUnit 起動構成?

役に立ちましたか?

解決 2

私の知る限り、Eclipse 3.4 では将来の JUnit 起動構成用にデフォルトの作業ディレクトリを変更する方法はありません。この問題はまた、 バグとして報告されました Eclipse バグ データベースにあります。

しかし、IDEAではそれが可能です。そこにあるのは、 デフォルトの編集 各起動構成タイプのあらゆる種類のデフォルトを個別に設定するためのボタン。

他のヒント

これは主観的な答えです:

テストのやり方が間違っていると思います。相対パスまたは完全パスを使用して JUnit からファイルをロードすべきではありません。代わりに、ファイルをプロジェクト内のリソースとして保持し (ビルド パスに追加し)、リソースとしてロードする必要があります。 JUnit テストで。こうすることで、ファイル システムに何か変更があった場合、誰かが別のファイル システムまたは IDE を使用していても、それらがビルド パス (ソース フォルダーとして) に残っている場合でも、問題は発生しません。

これがあなたが言いたいことかどうかはわかりませんが、本当に変更したい場合は、[実行構成オプション] -> [JUnit] -> [引数] タブに移動し、一番下 (Eclipse 3.4) に [作業ディレクトリ] が表示され、[その他] をクリックします。そこから変更します。

Eclipse 3 では、作業ディレクトリを設定できます。実行/デバッグ構成 -> 引数タブに移動します。作業ディレクトリで「other」を選択し、テストのルートを入力します。

これを行う可能性は見つかりませんでしたが、できることは次のとおりです。

getClass().getResourceAsStream(ファイル名);

getClass().getClassLoader().getResourceAsStream(ファイル名);

このメソッドは、クラスパス上のリソースを見つけます。最初のパスはクラスの場所に相対し、2 番目のパスは任意のクラスパスの「ルート エントリ」に相対します。その後、たとえばプロジェクトのルート ディレクトリをクラスパスに追加できます。

ただし、ファイルにも書き込みたい場合は、これは機能しません。

テストが現在の作業ディレクトリに依存している場合、その作業ディレクトリを正しく設定し、そのディレクトリを指すようにテスト対象のクラスを構成するのはテストの責任だと思います。

ほとんどのテストにスーパークラスがある場合は、その中に定数を記述します。または:ほとんどのテストにスーパークラスがある場合は、@Before セットアップ メソッドを作成します。または:ほとんどのテストにスーパークラスがない場合は、テスト コードベースのクラスに定数を記述します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top