我正在尝试为XNA项目设置一些单元测试。在确定测试项目设置为在配置管理器中构建并删除对XNA内容项目的引用的一些考验之后,我终于得到了要构建的测试。
但测试仍然不会运行一半的时间。如果我从测试视图中单击“运行选择”,我会不断收到错误“不支持此类接口(HRESULT异常:0x80004002(E_NOINTERFACE))”。如果我反而按下“在解决方案中运行所有测试”按钮,它有时会运行,但通常它会给我这个错误:“特定投射无效。”如果运行所有测试确实第一次工作(这似乎发生在从SVN更新后),它会在此之后立即停止工作。
我找到了一些有类似问题的人:
但两人似乎都没有决心就死了。任何帮助将不胜感激。
答案 0 :(得分:3)
默认的XNA解决方案不是COM-Visible。如果它是COM-Visible,测试框架似乎表现得稍好一些。最简单的解决方法是打开AssemblyInfo.cs,找到行
[assembly: ComVisible(false)]
将false更改为true。
blog post by Carlos Quintero让我解决了问题。这只能在大约一半的时间内起作用,而我实际上并不确定它是否有责任解决问题。
Aaron Stebner在forum post中声称,如果测试项目引用了ContentProject,它应该无法正常工作,并且引用了与之相符的WPDT发行说明。在我刚才的测试中,Game项目本身不能引用ContentProject来使测试每次都成功运行。我已经删除了运行测试的引用并在之后替换它。根据您的测试覆盖范围,这可以很好地工作或无用,但看起来它是我们使用内置测试套件所能获得的最佳效果。
答案 1 :(得分:1)
我知道这有点烦人,但是如果你右键单击测试项目并选择Debug->Start New Instance
,它应该构建它然后运行测试。令人讨厌的是,因为您正在调试,所以任何失败的断言都会暂停执行。然而,你可能想要这个,所以它不是 很重要。
答案 2 :(得分:0)
在某些情况下,可以在普通的.net类库项目中隔离目标代码,并仅引用测试项目中的类库。这样,通常的测试功能工作正常,因为您没有引用XNA项目。