我正在用C#和XNA 4.0编写一个简单的乒乓球游戏来学习单元测试。使用的工具是TestDriven.NET和NUnit,所有最新版本。问题是,如果我用VS2010内部调试器测试代码,一切运行正常,但是当我从菜单中使用“Run Test(s)”时,应用程序会出现错误:
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...)
所以它会在第一个textre加载时停止。发生了什么事?
如果您想检查代码,请在此处下载http://www.mediafire.com/?qwnkmyqheum
答案 0 :(得分:1)
这里显而易见的问题是工作目录是什么,当TD.NET运行测试时。如果您的文件位于C:\game1\content\*
,并且TD.NET在C:\TDNET
(或其他)中运行时运行测试,那么显然尝试加载Content\Whatever.jpg
将尝试打开{{1 ,不存在。简单的解决方法是为内容文件设置绝对路径(如果只是暂时的)以验证这是问题。
另一个问题是,您使用的是什么版本的TestDriven.net?他们从2.7的发行说明说:
966:XNA测试问题(工作目录问题)
第一个站点链接到第二个站点,提供此解决方法:
第1步。
下载AssemblyUtilities.zip和 解压缩到您的项目并将其添加到 你的解决方案。
第2步。
对于您希望运行的每个临时测试, 使用命令:
C:\TDNET\Content\Whatever.jpg
这需要在内容之前调用 加载,例如在第一行。
临时测试的一个例子可以是 在这里看到:
Testdriven.NET.AssemblyUtilities.SetEntryAssembly();
第3步。
像普通人一样运行临时测试 将插入符号放入测试中, 右键单击并选择“运行测试”。