3

我在一些 .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" ^
4

0 回答 0