使用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
, ,不存在。简单的解决方法是为您的内容文件设置绝对路径(如果只是暂时),以验证这是问题所在。
另一个问题是,您正在使用哪种版本的testdriven.net?他们的发行说明2.7说:
966:XNA测试问题(工作目录问题)
第一个站点链接到第二个网站,该网站提供了这种解决方法:
步骤1。
下载 汇编 并将其添加到您的项目中,并将其添加到您的解决方案中。
第2步。
对于您希望运行的每个临时测试,请使用命令:
Testdriven.NET.AssemblyUtilities.SetEntryAssembly();
需要在内容加载之前调用,例如在第一行中。
在这里可以看到临时测试的一个示例:
public static void myAdHocTest() { Testdriven.NET.AssemblyUtilities.SetEntryAssembly(); //Do your testing here }
步骤3。
通过将Caret放入测试中,右键单击并选择“运行测试”来运行临时测试。
不隶属于 StackOverflow