尝试按 类 分组的 运行 测试用例时,ClassInitialize 不执行
ClassInitialize doesn't execute when trying to run test cases grouped by classes
我有几个 TestClasses,每个 TestClasses 都很少 TestMethods.Again 我需要为这些 TestMethods 中的每一个创建数据,所有这些都是 SuiteBase 文件中的句柄,该文件由每个 TestClasses 继承。我需要为每个 TestClass 创建一次数据,以便 class 中的所有 TestMethods 都可以使用相同的数据。为此,我将数据创建代码放在 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()]
public class ScenarioOne : SuiteBase
{
[TestMethod()]
public void TestCase1()
{
//Blah Blah
}
[TestMethod()]
public void TestCase2()
{
//Blah Blah
}
[TestMethod()]
public void TestCase3()
{
//Blah Blah
}
}
现在我正尝试从我的测试资源管理器中 运行 单元测试(按 class 分组)。
理论上,在任何 TestMethods 开始之前,SuiteBase 中的 ClassInitialize 代码应该可以工作 first.But 我看到 ClassInitialize 代码不仅仅是 运行。我在ClassInitialize打断点调试,代码根本不执行。
我对 ClassInitialize 的行为的假设是错误的,还是我在这里做的根本错误?
很遗憾,无法继承 ClassInitializeAttribute 方法。由于无法继承ClassInitializeAttribute,因此在初始化ScenarioOne class 时无法调用SuiteBase class 中的ClassInitialize 方法。
尝试解决,需要在ScenarioOne中重新定义ClassInitialize方法,直接调用base方法,不要重复代码
[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
}
}
希望对您有所帮助
我有几个 TestClasses,每个 TestClasses 都很少 TestMethods.Again 我需要为这些 TestMethods 中的每一个创建数据,所有这些都是 SuiteBase 文件中的句柄,该文件由每个 TestClasses 继承。我需要为每个 TestClass 创建一次数据,以便 class 中的所有 TestMethods 都可以使用相同的数据。为此,我将数据创建代码放在 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()]
public class ScenarioOne : SuiteBase
{
[TestMethod()]
public void TestCase1()
{
//Blah Blah
}
[TestMethod()]
public void TestCase2()
{
//Blah Blah
}
[TestMethod()]
public void TestCase3()
{
//Blah Blah
}
}
现在我正尝试从我的测试资源管理器中 运行 单元测试(按 class 分组)。
理论上,在任何 TestMethods 开始之前,SuiteBase 中的 ClassInitialize 代码应该可以工作 first.But 我看到 ClassInitialize 代码不仅仅是 运行。我在ClassInitialize打断点调试,代码根本不执行。 我对 ClassInitialize 的行为的假设是错误的,还是我在这里做的根本错误?
很遗憾,无法继承 ClassInitializeAttribute 方法。由于无法继承ClassInitializeAttribute,因此在初始化ScenarioOne class 时无法调用SuiteBase class 中的ClassInitialize 方法。
尝试解决,需要在ScenarioOne中重新定义ClassInitialize方法,直接调用base方法,不要重复代码
[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
}
}
希望对您有所帮助