C#中unit testing的生命周期是多少
在Visual Studio中的C#中完整的MSTestunit testing运行中的事件序列是什么(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 )