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

本文关键字:运行测试 出错 项目 单元测试 XNA | 更新日期: 2023-09-27 18:25:40

我正试图为XNA项目设置一些单元测试。在确保测试项目设置为在配置管理器中构建并删除对XNA内容项目的引用方面经历了一些磨难之后,我终于构建了测试。

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

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

http://connect.microsoft.com/VisualStudio/feedback/details/602985/unit-testing-does-not-work-with-xna-4-0

http://social.msdn.microsoft.com/Forums/en-US/vsunittest/thread/175cb376-9846-40fa-9197-50595cd32200/

但两人似乎都死得没有决心。如有任何帮助,我们将不胜感激。

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

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

[assembly: ComVisible(false)]

并将虚假变为真实。

Carlos Quintero的一篇博客文章让我找到了解决方案。这只在大约一半的时间内有效,我实际上不确定它是否负责解决问题。

Aaron Stebner在一篇论坛帖子中声称,如果测试项目引用了ContentProject,并且引用了与此一致的WPDT发行说明,那么它无论如何都不应该工作。在我刚才的测试中,为了每次测试都能成功运行,游戏项目本身不能引用ContentProject。我已经删除了运行测试的引用,然后替换它。根据您的测试覆盖率,这可能工作良好,也可能毫无用处,但看起来这是我们使用内置测试套件所能得到的最好的结果。

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

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