父夹具在NCrunch中失败-无法转换TestContext_proxy

时间:2019-01-11 18:59:11

标签: mstest ncrunch

在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

检查源代码管理,看来现在失败的项目没有任何变化,这可能是什么原因造成的?

1 个答案:

答案 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方法,我们   最终爆炸。