提问人:Kaleb Pederson 提问时间:3/4/2017 更新时间:3/12/2018 访问量:1915
VSTest.Console.exe 执行模型和隔离行为
vstest.console.exe execution model and isolation behaviors
问:
我正在尝试确定在编写将在 .vstest.console.exe
示例 1:假设我有两个测试,这两个测试都依赖于值为零。现在,假设我们雇用了一名新实习生,他在编写的测试中无意中增加了该值。如果此新测试在旧的两个单元测试之前运行。如果测试在同一进程中运行,则这两个单元测试将失败(并且不会重置计数器值)。MyClass.Singleton.Counter
示例 2:假设我有两个集成测试,它们命中了同一个数据库。这两个测试都记录数据库中存在的计数器的值,递增计数器,然后从数据库中读取计数器,断言其值比最初读取时高 1。如果这两个测试并行运行,则我们有一个竞争条件。
最终目标是尝试了解开发人员在编写将专门运行的测试时应牢记的注意事项,其执行模型是什么?vstest.console.exe
注意:我对最佳实践不感兴趣,只对理解影响测试结果的方式的执行模型感兴趣。vstest.console.exe
相关注意事项:
- 如果 和 传递到控制台,并且每个都依赖于依赖程序集的冲突版本,则项目测试文件将如何成功执行?
project1.dll
project2.dll
- 每个测试文件(即dll)是否都有自己的进程?
- 每个测试文件(即 dll)是否在单个进程中为其提供自己的 AppDomain?
- 执行每个测试文件的当前工作目录是什么?
- 测试是串行执行还是并行执行?
- 测试执行顺序是否具有确定性?
- 不同的测试适配器对相关行为的控制程度如何?
- 未指定文件或测试适配器时的默认行为是什么?
.runsettings
相关背景资料:
(1) 的 vstest.console.exe 文档指出它“在隔离的进程中运行测试”。/InIsolation
我从上面可以推断出,创建了一个进程,在该进程中,传递给测试运行程序的所有测试文件都将执行,但这可能不准确。
(2)可以在命令行上获取多个测试“文件”,这些“文件”是可能引用不同目录中不同项目的DLL。vstest.console.exe
(3) 通过提供文件,可以使用测试适配器来执行测试。*.runsettings
答: 暂无答案
评论