【发布时间】:2014-08-20 13:42:42
【问题描述】:
在 Visual Studio (Ctrl+R, A) 中,在 C# 中完整的 MSTest 单元测试运行中的事件顺序是什么?
这是我目前的想法:
- 1 - 运行
[AssemblyInitialize] - 2 - 随机运行
[ClassInitialize] - 3 - 运行课程
[TestInitialize] - 4 - 从该类中随机运行
[TestMethod] - 5 - 运行课程
[TestCleanup] - 对类中的每个 TestMethod 重复 3 到 5
- 对每个测试类重复 2 到 5
- 6 - 运行所有类
[ClassCleanup]方法 - 7 - 运行
[AssemblyCleanup]
但我认为VS可能会一次初始化多个类,然后随机运行TestMethods。测试应该是跨类还是跨整个测试项目,甚至是整个解决方案?了解事件的确切顺序应该可以回答这些问题。
更新:
我做了一些测试,发现它确实是事件发生的顺序,除了#3 到 5,任何类的任何测试都可以运行。 Visual Studio 似乎一次按顺序运行一个测试。但是,由于接受的答案中解释的原因,不应依赖这一点。
【问题讨论】:
-
是的,它绝对是 MSTest 框架,你读过ict.ken.be/unit-testing-with-mstest 吗?
-
如果我没记错的话,你可以有测试用例排序属性,如果你想确保顺序是正确的。
-
认真的吗?你能提供这个属性的名称吗?我只知道测试“Ordered Test”,file.orderedtest 你指定的顺序(msdn.microsoft.com/en-us/library/ms182630(v=vs.90).aspx)
-
是的,这是为 MSUnit 准备的,我已经更新了问题。
-
@DejanBogatinovski,可能不为人所知的是,为每个 TestMethod (related answer) 创建了一个新的类实例,因此构造函数将在每次测试之前运行。
标签: c# .net visual-studio unit-testing mstest