C# 如何初始化一些测试而不是其他测试?

C# 如何初始化一些测试而不是其他测试?,c#,unit-testing,mstest,C#,Unit Testing,Mstest,使用TestInitialize(),我可以初始化TestClass中的所有测试。但是,如果我只想初始化一些测试,而不想初始化其他测试,那么如何实现这一点呢?将测试数据的非共享初始化移动到每个[TestMethod]方法 初始化方法对每个测试调用一次,因此只需将不希望为所有测试运行的代码移到特定的方法中即可 您可以通过将它们分为两个类来实现这一点。或者,如果它们都使用相同的方法和变量,则将它们放入从具有共享方法和数据的公共基类继承的子类中。最好的方法是将测试方法分离到不同的测试类中。但是,如果您

使用
TestInitialize()
,我可以初始化
TestClass
中的所有测试。但是,如果我只想初始化一些测试,而不想初始化其他测试,那么如何实现这一点呢?

将测试数据的非共享初始化移动到每个
[TestMethod]
方法


初始化方法对每个测试调用一次,因此只需将不希望为所有测试运行的代码移到特定的方法中即可

您可以通过将它们分为两个类来实现这一点。或者,如果它们都使用相同的方法和变量,则将它们放入从具有共享方法和数据的公共基类继承的子类中。

最好的方法是将
测试方法
分离到不同的
测试类中。但是,如果您希望将它们全部放在一个
测试类中
,则可以为每个测试创建不同的初始化方法:

[TestClass]
public class TestClass
{
    [TestInitialize]
    public void Initialize()
    {
        switch (TestContext.TestName)
        {
            case "TestMethod1":
                this.InitializeTestMethod1();
                break;

            case "TestMethod2":
                this.InitializeTestMethod2();
                break;

            default:
                break;
        }
    }

    [TestMethod]
    public void TestMethod1()
    {
    }

    [TestMethod]
    public void TestMethod2()
    {
    }

    private void InitializeTestMethod1()
    {
        // Initialize TestMethod1
    }

    private void InitializeTestMethod2()
    {
        // Initialize TestMethod2
    }

    public TestContext TestContext { get; set; }
}