我正在用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放入测试中,右键单击并选择“运行测试”来运行临时测试。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top