1

テストを実行するときに画像ファイルが見つからず、画像を探すたびに、バイナリが存在するフォルダー内ではなく、Nunit フォルダー内を検索するという問題が Nunit で発生しています。以下は、何が起こっているかの詳細な説明です。

  1. いくつかのゲーム要素の定義と、使用しているスプライトを定義するpngファイルを含むテスト中のバイナリを構築しています(健全性のためにBinary1と呼びます)
  2. Nunit は、別のバイナリ (Binary1Test) からテストを実行し、最初のバイナリ (Binary1) に対してテスト メソッドを実行します。
  3. テストが Binary1 でコードを実行し、Binary1 が (相対パスで定義された) 画像ファイルの 1 つを使用する必要がある場合を除き、すべてのテストに合格します。メソッドが呼び出されると、Nunit はファイルが見つからないという例外をスローし、ファイルが見つからないことを示し、Program Files\Nunit.net 2.0 フォルダー内を探していることを示します。

したがって、コードがこれを行っている理由がわかりません。Enviornment.CurrentDirectory をプルアップすると、nunit へのパスではなく、正しいパス (デバッグ フォルダーへのパス) が返されます。また、相対パスを使用する代わりにこれを使用すると、テストは問題なく実行されます。私の質問は、私のバイナリ内から相対パスをロードする場合、バイナリが配置され、画像が保存されているディレクトリではなく、nunit がそのディレクトリを使用することを決定した理由を知っている人はいますか? ありがとう。

4

1 に答える 1

0

なぜこれが起こっているのかわかりませんが、トラブルシューティングに少し役立つかもしれないことに言及したかったのです. テストにパス制約アサーションはありますか? これは、トラブルシューティングに役立つ場合があります。

構文の NUnit.org リンクは次のとおりです。 http://www.nunit.org/index.php/extensions/docs/2.4/files/index.php?p=pathConstraints&r=2.5.1

相対パスの構文の例 (上記のリンクから) を次に示します。相対パスが絶対パスと同じであると主張し、何が起こっているのかを確認したい場合があります。少なくとも、合格するために必要なパスに関する特定の失敗したテストがあります。

Assert.That( "/folder1/./junk/../folder2", 
    Is.SamePath( "/folder1/folder2" ) );
Assert.That( "/folder1/./junk/../folder2/x", 
    Is.Not.SamePath( "/folder1/folder2" ) );
于 2010-03-21T00:20:54.810 に答える