尝试运行按类

时间:2018-01-30 19:31:29

标签: c# visual-studio unit-testing test-explorer visualstudio.testtools

我有几个TestClasses,每个TestClasses都有很少的TestMethods.Again我需要为每个TestMethods创建数据,所有这些都是SuiteBase文件中的句柄,每个TestClass都继承这些句柄。我需要为每个TestClass创建一次数据,以便该类中的所有TestMethod都可以使用相同的数据。出于这个原因,我已将数据创建代码放在SuiteBase文件中的ClassInitialize下。 SuiteBase的结构:

    public class SuiteBase
{
    [ClassInitialize]
    public void ClassInit()
    {
        //Create the data for the all test cases under one TestClass          
    }

    [TestInitialize]
    public void Init()
    {
        //Starts the app each time for each TestMethod
    }

TestClass结构:

    [TestClass()]
public class ScenarioOne :  SuiteBase
{
    [TestMethod()]
    public void TestCase1()
    {
        //Blah Blah
    }

            [TestMethod()]
    public void TestCase2()
    {
        //Blah Blah
    }

            [TestMethod()]
    public void TestCase3()
    {
        //Blah Blah
    }
}

现在我正在尝试从我的测试资源管理器中运行单元测试(按类分组)。 enter image description here

理论上,在任何TestMethods开始之前,SuiteBase中的ClassInitialize代码应首先工作。但我发现ClassInitialize代码不仅仅是运行。我在ClassInitialize中设置了一个断点并进行了调试,代码根本没有执行。 在ClassInitialize的行为中我的假设是错误的还是我在这里做了一些根本错误的事情?

1 个答案:

答案 0 :(得分:3)

不幸的是,ClassInitializeAttribute方法无法继承。由于无法继承ClassInitializeAttribute,因此在初始化ScenarioOne类时,无法调用SuiteBase类中的ClassInitialize方法。

尝试解决它,你必须再次定义ScenarioOne中的ClassInitialize方法,只需调用基本方法而不是复制代码。

[TestClass()]
public class ScenarioOne : SuiteBase
{
    [ClassInitialize]
    public static void ClassInit()
    {
        SuiteBase.ClassInit();
        //Create the data for the all test cases under one TestClass          
    }
    [TestMethod()]
    public void TestCase1()
    {
        //Blah Blah
    }

    [TestMethod()]
    public void TestCase2()
    {
        //Blah Blah
    }

    [TestMethod()]
    public void TestCase3()
    {
        //Blah Blah
    }
}

希望这有帮助