1

我正在用 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...)

因此,当要加载第一个 textre 时它会停止。这是怎么回事?

如果您想查看代码,请在此处下载http://www.mediafire.com/?qwnkmyqheum

4

1 回答 1

1

这里明显的问题是工作目录是什么,当 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
}

步骤 3。

像平常一样运行临时测试,将插入符号放在测试中,右键单击并选择“运行测试”。

于 2010-06-07T11:20:13.490 回答