testdriven.netおよびnunitを使用する場合のfilenotfound例外
-
24-10-2019 - |
質問
C#とXNA 4.0でシンプルなポンゲームを書いて、単体テストを学習しています。使用されるツールは、すべての最新バージョンであるtestdriven.netとnunitです。問題は、VS2010内部デバッガーでコードをテストすると、すべてが正常に実行されますが、メニューから「実行テスト」を使用すると、アプリケーションがエラーでチョークを付けます。
Test 'WindowsGame1.Game1.TestGameMenu' failed: Microsoft.Xna.Framework.Content.ContentLoadException : Error loading "SpaceBackground". File not found.
----> System.IO.FileNotFoundException : Error loading "Content\SpaceBackground.xnb". File not found.
(some more below...)
そのため、最初のテキストレがロードされると停止します。どうしたの?
コードをチェックアウトしたい場合は、こちらからダウンロードしてください http://www.mediafire.com/?qwnkmyqheum
解決
ここでの明らかな質問は、TD.NETがテストを実行したときの作業ディレクトリとは何かです。ファイルが入っている場合 C:\game1\content\*
, 、およびTD.NETは、操作中にテストを実行します C:\TDNET
(または何でも)、明らかにロードしようとしています Content\Whatever.jpg
オープンしようとします C:\TDNET\Content\Whatever.jpg
, 、存在しません。単純な回避策は、これが問題であることを確認するために、コンテンツファイルに(一時的にのみ)絶対的なパスを設定することです。
もう1つの質問は、どのバージョンのtestdriven.netを使用していますか? 2.7からの彼らのリリースノートはこれを言っています:
966:XNAテストの問題(ワーキングディレクトリの問題)
最初のサイトは2番目のサイトにリンクしています。これは、この回避策を提供します。
ステップ1。
ダウンロード assemblyutilities.zip プロジェクトを開梱して、ソリューションに追加します。
ステップ2。
実行するすべてのアドホックテストについて、コマンドを使用します。
Testdriven.NET.AssemblyUtilities.SetEntryAssembly();
これは、最初の行などのコンテンツロードの前に呼び出す必要があります。
アドホックテストの例はここで見ることができます:
public static void myAdHocTest() { Testdriven.NET.AssemblyUtilities.SetEntryAssembly(); //Do your testing here }
ステップ3。
テストにカレットを入れて、右クリックして「実行テスト」を選択して、通常のようなアドホックテストを実行します。