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

Parent fixture failed in NCrunch - TestContext_proxy cannot be converted

我在 NCrunch 中遇到这个错误,当 运行 在 MS Test 测试中:

System.ArgumentException: Object of type 'Microsoft.VisualStudio.TestTools.UnitTesting.TestContext_proxy' cannot be converted to type 'Microsoft.VisualStudio.TestTools.UnitTesting.TestContext'.

该解决方案包含许多 MS 测试 1 和 MS 测试 2 项目的混合体。这些项目的所有其余测试通常在 NCrunch 中 运行。

所有 MS Test 1 项目都引用位于 C:\Program Files (x86)\Microsoft Visual Studio17\Professional\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll

的同一个 MS Test DLL

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

事实证明,有问题的项目引用了其他测试项目之一,并且该引用项目已更改为使用 MS 测试 2。

间接引用另一个版本的 MSTest 意味着 NC运行ch 不知道使用哪个版本的 MSTest,然后导致异常。

这个问题需要一段时间才能浮出水面,因为 NC运行ch 被设置为仅 运行 个受影响的测试,并且 none 这些测试已经更改了一段时间。

this thread on NCrunch forum 中讨论了类似的问题:

Your test project is referencing two different versions of MSTest. The test project directly references MSTest 2017 (Microsoft.VisualStudio.TestPlatform.TestFramework), but indirectly references an earlier version of MSTest via Voodoo.TestData (Microsoft.VisualStudio.QualityTools.UnitTestFramework). NCrunch doesn't know which version to use, so it sets up the runtime environment for the older version. This results in the TestContext constructed for the older version of MSTest being passed into an AssemblyInitialize method targeted towards the newer version, and we end up with an explosion.