【问题标题】:Unit tests failing in xunit.runner.console but passes locally单元测试在 xunit.runner.console 中失败,但在本地通过
【发布时间】:2019-12-07 12:05:55
【问题描述】:

我们的 TFS CI 构建使用 dotCover 来运行 xUnit 测试。然而,一些测试在那里失败,但在本地他们通过了。

我从 nuget 下载了 dotCover.CommandLineTools 和 xunit.runner.console。解压缩包并尝试在本地运行dotCover cover 命令,就像在 TFS 管道中执行的那样:

.\tools\dotcover.exe cover /TargetExecutable=".\..\xunit-runner\tools\net461\xunit.console.exe"
/TargetArguments="c:\Projects\MySolution\Sources\MyTestProject\bin\Debug\MyTestProject.dll -xml c:/temp/testResultFile.xml"
/Output="c:/temp/coverageResultFile.dcvr"
/Filters='-:module=xunit.*;-:module=*UnitTests*'

得到与 CI 相同的错误。根据我对 dotCover 输出在失败测试中显示的错误的调查,从 VS 本地运行测试并使用 dotCover 运行它们时,模拟数据似乎不同。

有人遇到过这样的问题吗?有什么解决办法吗?

编辑:又试了一件事,运行命令

.\xunit.console c:\Projects\MySolution\Sources\MyTestProject\bin\Debug\MyTestProject.dll 发现这给了我与 CI 相同的错误,因此问题的原因不是 CI,也不是 dotCover,而是 xunit.runner.console。

对此有何新观点?

【问题讨论】:

    标签: unit-testing mocking xunit dotcover


    【解决方案1】:

    根据您的描述和分析。此问题似乎与 TFS 端无关(例如构建任务/管道的配置。因为当您直接在本地运行 dotCover cover 命令作为 TFS 构建服务器时,结果相同。

    看看这个类似的问题,看看它是否有帮助:Unit tests are failing when run from dotCover

    问题似乎与我的构建使用 XML 文件来保存某些数据值。此 XML 文件由 VSTest 找到 在 TFS 下运行而不是通过 dotCover 运行时。

    当 dotCover 运行时,它会创建一个 TestResults 文件夹,然后 将所有必要的文件复制到运行单元测试所需的文件中。全部 除 XML 文件外,其他文件都会被复制。我已将文件设置为“复制 总是”所以不明白为什么不复制这个文件。我试过了 手动将文件复制为批处理文件,但文件夹结构为 由 dotCover 创建,因此在我实际运行代码之前它不存在 覆盖范围

    如果文件复制失败的另一种方法:Shadow-copying in dotCover: if your NUnit tests fail during continuous testing

    【讨论】:

    • 谢谢,我会检查的。请编辑您所说的第一个链接,它指的是这个问题 :) 我认为我们的模拟是从 jsons 导入的,所以我认为问题可能出在使用文件上。我需要检查。我对这个项目很陌生,所以我还不是很熟悉。
    • @Gondil 抱歉打错了。已更正和更新。对我来说也不熟悉dotcover,不禁深入挖掘根本原因。只能给出一些建议和方向。
    • 感谢编辑。我知道您不熟悉 dotCover,我也不熟悉 :D 我也只是假设它有什么问题,这就是我在这里问的原因,更多的头脑,更多的经验 :) 我将尝试专注于 dotCover 和文件使用并尝试找到解决方案。
    • 其他团队成员帮助了我.. 他创造了类似于 Mocking FW 的东西,所以我有点迷失了。这次不知道(我认为我的同事也不知道)为什么它不能与 xunit.runner.console 一起正常工作。使用 C# 属性对模拟进行了某种一般初始化,并且在通过 xunit.runner.console 运行时它不起作用。因此,即使没有通用解决方案,这个问题也可能会被关闭。
    猜你喜欢
    • 1970-01-01
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 2018-12-18
    • 2022-01-20
    • 2023-03-19
    • 1970-01-01
    相关资源
    最近更新 更多