23

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

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

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

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

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

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

4

5 に答える 5

11

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

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

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

于 2008-09-23T08:48:17.920 に答える
10

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

ただし、IDEA では可能です。各起動構成タイプのすべての種類のデフォルトを個別に設定するための [デフォルトの編集] ボタンがあります。

于 2008-10-13T16:07:41.227 に答える
3

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

于 2009-02-03T13:57:29.687 に答える
1

私はこれを行う可能性を見つけていませんが、あなたができることは使用することです:

getClass()。getResourceAsStream(filename);

getClass()。getClassLoader()。getResourceAsStream(filename);

このメソッドは、クラスパス上のリソースを検索します。最初のものはクラスの場所に相対的であり、2番目のものはクラスパス「ルートエントリ」に相対的です。次に、たとえば、プロジェクトのルートディレクトリをクラスパスに追加できます。

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

于 2008-09-23T08:53:50.137 に答える
1

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

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

于 2008-09-23T09:01:08.873 に答える