c#中单元测试的生命周期是什么?
本文关键字:周期 是什么 生命 单元测试 | 更新日期: 2023-09-27 18:19:00
完整的MSTest运行在Visual Studio中的c#单元测试(Ctrl+R, a)中的事件顺序是什么?
以下是我目前的想法:- 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似乎是按顺序一次运行一个测试。然而,人们不应该依赖于这个被接受的答案中解释的原因。
你是正确的。这确实是代码运行的顺序。但是,由于测试应该是完全独立的,因此不能保证它们将按顺序运行,并且它们将在单个线程上运行。框架可以同时运行多个测试。
如果您也需要的话,您可以通过使用测试用例来强制一个特定的测试顺序,但是这被认为是不好的实践,因为测试用例应该被用来将测试重新组合在一起(标记它们)。
若要为测试定义特定顺序,请创建有序测试(http://msdn.microsoft.com/en-us/library/ms182631.aspx)或创建匹配文件并按所需的指定顺序为每个测试用例调用mstest.exe (http://msdn.microsoft.com/en-us/library/ms182489(VS.80).aspx)