[英]FileNotFound Exception when using TestDriven.NET and NUnit
我正在用C#和XNA 4.0编写一个简单的Pong游戏,以学习单元测试。 使用的工具是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...)
因此,它将在第一个textre加载时停止。 这是怎么回事?
如果您想签出代码,请在此处下载代码http://www.mediafire.com/?qwnkmyqheum
显而易见的问题是,当TD.NET运行测试时,工作目录是什么。 如果您的文件位于C:\\game1\\content\\*
,并且TD.NET在C:\\TDNET
(或其他任何版本)中运行时运行测试,则显然尝试加载Content\\Whatever.jpg
将尝试打开C:\\TDNET\\Content\\Whatever.jpg
,不存在。 一种简单的解决方法是为您的内容文件设置一个绝对路径(如果只是临时设置)以验证这是问题所在。
另一个问题是,您正在使用哪个版本的TestDriven.net? 他们从2.7发布的说明中说:
966:XNA测试问题(工作目录问题)
第一个站点链接到第二个站点,第二个站点提供以下解决方法:
第1步。
下载AssemblyUtilities.zip并解压缩到您的项目中,然后将其添加到您的解决方案中。
第2步。
对于您希望运行的每个临时测试,请使用以下命令:
Testdriven.NET.AssemblyUtilities.SetEntryAssembly();
这需要在内容加载之前调用,例如在第一行中。
临时测试的示例可以在此处查看:
public static void myAdHocTest() { Testdriven.NET.AssemblyUtilities.SetEntryAssembly(); //Do your testing here }
第三步
像往常一样运行临时测试,方法是将插入符号放入测试中,右键单击并选择“运行测试”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.