Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XNA项目单元测试,生成但运行测试时出错_C#_Visual Studio 2010_Xna - Fatal编程技术网

C# XNA项目单元测试,生成但运行测试时出错

C# XNA项目单元测试,生成但运行测试时出错,c#,visual-studio-2010,xna,C#,Visual Studio 2010,Xna,我正在尝试为XNA项目设置一些单元测试。在确保测试项目设置为在configuration manager中构建并删除对XNA内容项目的引用的一些考验之后,我终于获得了要构建的测试 但测试仍有一半时间无法运行。如果我从测试视图中单击“运行选择”,我会不断收到错误“不支持此类接口(来自HRESULT的异常:0x80004002(E_NOINTERFACE))。”如果我改为按“在解决方案中运行所有测试”按钮,它有时会运行,但通常会给我此错误:“特定强制转换无效”。如果第一次运行所有测试确实有效(这似乎

我正在尝试为XNA项目设置一些单元测试。在确保测试项目设置为在configuration manager中构建并删除对XNA内容项目的引用的一些考验之后,我终于获得了要构建的测试

但测试仍有一半时间无法运行。如果我从测试视图中单击“运行选择”,我会不断收到错误“不支持此类接口(来自HRESULT的异常:0x80004002(E_NOINTERFACE))。”如果我改为按“在解决方案中运行所有测试”按钮,它有时会运行,但通常会给我此错误:“特定强制转换无效”。如果第一次运行所有测试确实有效(这似乎是在从SVN更新之后发生的),之后它立即停止工作

我发现一些人也有类似的问题:


但是这两个问题似乎都没有解决。任何帮助都将不胜感激。

我知道这有点烦人,但是如果您右键单击测试项目并选择
Debug->Start New Instance
,它应该构建它,然后运行测试。烦人的是,由于您正在调试,任何失败的断言都会暂停执行。您可以但是,您需要这样做,所以这并不是什么大问题。

在某些情况下,可以在普通的.net类库项目中隔离目标代码,并从测试项目中仅引用该类库。这样,通常的测试功能工作得很好,因为您不引用XNA项目。

默认的XNA解决方案不是COM可见。如果测试框架是COM可见的,那么它的性能似乎会稍好一些。最简单的修复方法是打开AssemblyInfo.cs,找到行

[assembly: ComVisible(false)]
把假改为真

A引导我找到了解决方法。这只在大约一半的时间内有效,我不确定它是否负责解决问题


Aaron Stebner在一篇文章中声称,如果测试项目引用了ContentProject,那么它不应该起任何作用,并且引用了与此一致的WPDT发行说明。在我刚才的测试中,游戏项目本身不能引用ContentProject,以便每次都能成功运行测试。我已经开始删除引用以运行测试这取决于你的测试覆盖率,它可能工作得很好,也可能没用,但它看起来是内置测试套件的最佳选择。

是否可以发布一些代码?甚至可能是项目的一部分?你能解释一下怎么做吗?@AJD-我想他的意思是如果你的代码不需要使用XNA cla例如,如果将
Vector2
拆分为两个浮点。但是,您并没有真正测试可能会引入更多错误并可能遗漏其他错误的完全相同的代码。正如Richard所解释的,如果可以将要测试的代码移到单独的非XNA程序集中,则可以使用测试代码不引用XNA。这是我为我正在处理的代码所做的。我的核心函数在库A中,我的测试在引用A的ATest中,我的“游戏”在程序集B中,它只引用A。然后ATest就可以与常用的测试工具配合使用。是的,这是我们过去几周不得不做的。还有更糟糕的事情命运是注定的,但有一件事让事情变得更糟,那就是预期的例外也不想真正起作用(我现在不记得为什么)。因此,我必须在测试中捕捉异常,它在每一次测试中都会像这样中断。@AJD-文档的备注部分中有一些关于行为的注释。也许它们会对您的问题有所帮助。