我在一些 .NET 程序集上运行 OpenCover.console 时遇到了一些问题。
我们看到一些 MSTEST 测试失败,只有在 OpenCover 下运行时。
正在发生的事情是,我们的某些测试正在读取和写入 LocalDB 数据库。是的,这些比单元测试更恰当地称为集成测试,但它们正在测试我们需要测试的功能。
有问题的测试首先清除它使用的表,填充种子数据,运行一些应该将记录插入数据库的代码,然后读取数据库以确保记录存在。
我们看到的是一切运行正常,除了我们没有看到我们期望的所有记录。
我们假设的是,当从 OpenCover 运行时,测试可能会并行运行,并且一个测试的清除代码在另一个测试的测试代码运行之前运行。
所以,问题:
- OpenCover 是否并行运行测试?
- 有没有办法配置它不?
- 更好的是 - 有没有办法将它配置为不用于某些测试但不用于其他测试?(我们的大多数测试都不会访问数据库,并行性对它们来说并不是一件坏事。)
我们正在使用的命令:
<path>\OpenCover.Console.exe ^
-target:"<path>\vstestconsole.exe" ^
-targetargs:"/Logger.trx <listofassemblies>" ^
-excludebyattribute:*.TestClass*;*.TestMethod*;*.ExcludeFromCoverage* ^
-output:TestResults\outputCoverage.xml ^
-filter:"<listoffilters" ^