azure-devops管道测试通过报告使用错误的数学

问题描述

我有一个Azure DevOps管道,其中40%的测试处于非活动状态。该报告在本应显示为100%的情况下显示60%的通过率,因为通常通过率是针对执行的测试而不是针对编写的测试的全域定义的。

我已经搜索了Microsoft文档,唯一的答案是检查没有发现此问题的stackoverflow。

有人可以告诉我如何从报告中过滤掉无效的测试吗?谢谢!

解决方法

该报告显示(我认为)应该通过60%的通过率 100%,因为通常合格率是针对执行的测试定义的 而不是编写的测试范围。

场景:

我有5种测试方法,其中3种成功,而1种失败,第五种测试方法带有Ignore属性标记。

重现相同的问题:

对于VSTest任务的测试报告,被忽略的测试将标记为other。总计测试是Passed+Failed+Others而不是Passed+Failed的摘要,因此您得到60%而不是100%。

enter image description here

关于one discussion的类似问题,据我所知,该团队已对是否在汇总计算中使用被忽略的测试进行了进一步调查,以积压。您可以在此处评论以进行更新。

有人可以告诉我如何过滤掉无效的测试 报告?谢谢!

我的解决方法是使用TestCategory而不是Ignore属性。从Ignore更改为TestCategory

发件人:

[Ignore]
[TestMethod]
public void TestMethod5()
{
    bool value = true;
    if (value.Equals(true))
    {
        Console.WriteLine("True");
    }
}

收件人:

[TestCategory("TestsToBeIgnored")]
[TestMethod]
public void TestMethod5()
{
    bool value = true;
    if (value.Equals(true))
    {
        Console.WriteLine("True");
    }
}

配置VSTest测试过滤器,添加过滤器TestCategory!=TestsToBeIgnored

enter image description here

enter image description here

这样,总的测试确实排除了我需要忽略的测试,并且百分比可以是准确的。 (Test filter选项适用于Azure Devops管道,本地vstest命令行和VS测试管理器)