无法使用ClassInitialize方法执行类

时间:2013-12-20 09:46:02

标签: c# visual-studio unit-testing mstest vs-unit-testing-framework

我面临一个尴尬的局面 - 所有具有[ClassInitialize]方法的测试类都无法执行内部的所有测试方法。

示例:

[TestClass]
public class ChargeAccountServiceTests
{
    private static PrivateType ChargeAccountService_Accessor;

    [ClassInitialize]
    public static void InitializeClass(Microsoft.VisualStudio.TestTools.UnitTesting.TestContext context)
    {
         ChargeAccountService_Accessor = new PrivateType(typeof(ChargeAccountService));
    }

    [TestMethod]
    public void TestFixOMRHappySHA()
    {
          //TEST LOGIC
    }
}

导致测试代理抛出以下异常:

Test Name:  TestFixOMRHappySHA
Test FullName:  ChargeAccountServiceTests.TestFixOMRHappySHA
Test Source:    \ChargeAccountServiceTests.cs : line 22
Test Outcome:   Failed
Test Duration:  0:00:00

结果讯息:

  

方法ChargeAccountServiceTests.InitializeClass具有错误的签名。参数1的类型应为Microsoft.VisualStudio.TestTools.UnitTesting.TestContext。

此测试几天前一直在运行。测试项目目标是.NET 3.5

3 个答案:

答案 0 :(得分:2)

最后,我通过应用我发现的提示组合解决了它:

  1. 其中一个MSTest项目的目标是4.0,而其他项目的目标是3.5 - 所以我不得不改变它并重建假货。
  2. 我删除了Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll引用并将其再次添加到我的所有测试项目中
  3. 我在我的解决方案中找到了旧版本的vsdmi文件 - 已删除
  4. 我删除并创建了Local.testsettings
  5. 重新启动VS

答案 1 :(得分:2)

从我对similar question的回答中,我遇到了同样的问题,对我而言,它起作用了

  1. 删除对Microsoft.VisualStudio.QualityTools.UnitTestFramework的引用
  2. 右键单击该项目,然后选择"添加>单元测试......"使用正确的版本恢复引用。

答案 2 :(得分:0)

我有同样的错误,但是对于[AssemblyInitialize]却不是[ClassInitialize]。

删除对Microsoft.VisualStudio.QualityTools.UnitTestFramework的引用并重新添加v10.0.0.0可以解决我的问题。

事实证明,我的不同测试项目都引用了不同的版本,并且使它们始终指向10.0.0.0,从而解决了该问题。