0

在 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 项目都引用了相同的 MS Test DLL,位于C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll

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

4

1 回答 1

0

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

间接引用另一个版本的 MSTest 意味着 NCrunch 不知道要使用哪个版本的 MSTest,从而导致异常。

这个问题需要一段时间才能浮出水面,因为 NCrunch 被设置为只运行受影响的测试,并且这些测试都没有改变一段时间。

NCrunch 论坛的这个帖子中讨论了一个类似的问题:

您的测试项目引用了两个不同版本的 MSTest。测试项目直接引用 MSTest 2017 (Microsoft.VisualStudio.TestPlatform.TestFramework),但通过 Voodoo.TestData (Microsoft.VisualStudio.QualityTools.UnitTestFramework) 间接引用早期版本的 MSTest。NCrunch 不知道要使用哪个版本,因此它为旧版本设置了运行时环境。这导致为旧版本的 MSTest 构建的 TestContext 被传递到针对新版本的 AssemblyInitialize 方法中,最终导致爆炸。

于 2019-01-11T18:59:10.807 回答