什么“方法…… ClassInitialize有错误的签名……”是什么意思?

在我的Visual Studio 2012解决方案中,我有一个用于unit testingC ++ / CLI代码的C#项目,例如

... using System.IO; using Stuff; namespace MyCLIClassTest { [TestClass] public class MyCLIClassTest { public MyCLIClassTest() {} [ClassInitialize] public static void Setup(TestContext testContext) { } [TestMethod] public void LibraryAccessTest() { ... } } } 

现在,C#测试都失败了,消息如“方法MyCLIClassTest.MyCLIClassTest.ClassInitialize有错误的签名。该方法必须是静态的,公共的,不返回值,并且应该采用TestContext类型的单个参数。”

删除ClassInitializer后,我得到“无法为类MyCLIClassTest.MyCLIClassTest设置TestContext属性。错误:System.ArgumentException:类型为’Microsoft.VisualStudio.TestPlatform.MSTestFramework.TestContextImplementation’的对象无法转换为类型’Microsoft.VisualStudio.TestTools .UnitTesting.TestContext” ..

我使用了较旧的unit testing框架版本的DLL。 之所以发生这种情况是因为该项目最近已迁移到VS2012。

因此,在测试项目下的解决方案资源管理器中,您会找到“参考”。 右键单击它并选择“添加引用…”以打开引用管理器。 搜索“unittest”并检查版本号为10.1.0.0的Microsoft.VisualStudio.QualityTools.UnitTestFramework。 取消选中此程序集的所有其他版本。 单击“确定”关闭管理器。

在此处输入图像描述

从重复的问题复制的替代答案: 为什么ClassInitialize装饰方法使我的所有测试失败?

[ClassInitialize]修饰方法应该是静态的,并且只采用TestContext类型的一个参数:

 [ClassInitialize] public static void SetupAuth(TestContext context) { var x = 0; } 

我有完全相同的问题,根据TobiMcNamobi建议删除/添加引用并没有为我解决,但删除引用,右键单击项目并选择“添加>unit testing…”,从而重新生成引用工作。 不确定与手动操作相比有什么不同。

安装程序签名错误。 参数1应为Microsoft.VisualStudio.TestTools.UnitTesting.TestContext类型。

我正在运行一个负载测试项目并且有两个v10.0.0.0版本的DLL:

 Microsoft.VisualStudio.QualityTools.LoadTestFramework.dll Microsoft.VisualStudio.QualityTools.WebTestFramework.dll 

将版本LoadTestFramework更改为版本10.1并未修复它。

我不得不转到我的unit testing项目并删除MSTest.Adapter引用:

 Microsoft.VisualStudio.TestPlatform.TestFramework.dll Microsoft.VisualStudio.TestPlatform.Extensions.dll 

然后在unit testing项目中添加对v10.1的引用

 Microsoft.VisualStudio.QualityTools.LoadTestFramework.dll