在MS Test测试中运行时,我在NCrunch中收到此错误:
System.ArgumentException:类型的对象 'Microsoft.VisualStudio.TestTools.UnitTesting.TestContext_proxy' 无法转换为类型 “ Microsoft.VisualStudio.TestTools.UnitTesting.TestContext”。
该解决方案包含许多MS Test 1和MS Test 2项目的混合。这些项目的其余所有测试均在NCrunch中正常运行。
所有MS Test 1项目都引用位于C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
的同一个MS Test DLL
检查源代码管理,看来现在失败的项目没有任何变化,这可能是什么原因造成的?
答案 0 :(得分:0)
事实证明,该项目正在引用其他测试项目之一,并且该引用项目已更改为使用MS Test2。
间接引用另一版本的MSTest意味着NCrunch不知道要使用哪个版本的MSTest,然后导致异常。
这个问题花了一段时间,因为NCrunch设置为仅运行受影响的测试,而且这些测试在一段时间内都没有改变。
this thread on NCrunch forum中讨论了类似的问题:
您的测试项目引用了两个不同版本的MSTest。的 测试项目直接引用了MSTest 2017 (Microsoft.VisualStudio.TestPlatform.TestFramework),但间接 通过Voodoo.TestData引用了MSTest的早期版本 (Microsoft.VisualStudio.QualityTools.UnitTestFramework)。 NCrunch 不知道要使用哪个版本,因此它设置了运行时 旧版本的环境。这导致TestContext 为较旧版本的MSTest构造而成,并将其传递给 针对新版本的AssemblyInitialize方法,我们 最终爆炸。