在 c# 方法中添加调试语句时,Stryker 突变测试失败

Stryker Mutation test fails when debug statement is added in c# method

提问人:IamChandu 提问时间:6/1/2023 最后编辑:FlorianIamChandu 更新时间:6/1/2023 访问量:76

问:

当代码块中包含 debug 语句时,Stryker 无法在 xunit 测试类下运行任何测试用例。

我有几个测试用例涵盖了以下方法。Stryker 无法运行这些测试以及可用于同一类中其他方法的其他测试。我尝试使用“Stryker disable all”和“Stryker restore all”,但它不起作用。

当从下面的代码块中删除调试时,所有测试用例都会被执行,并且 stryker 可以正常工作。

我尝试在调试和发布模式下运行测试用例。史崔克的行为是一样的。

Stryker 命令:

dotnet stryker -o 
private async Task<X509Certificate2> getcert(string certname, string password)
{
    #if DEBUG
        return new X509Certificate2(certname,
            password);
    #endif
      
    return await _someprovider.getcert(certname,password);
} 
C# .net-core 突变测试 stryker stryker-net

评论

0赞 Jeremy Lakeman 6/1/2023
测试到底以什么方式运行失败?在您的示例中,如果 certname 不是受该密码保护的文件,则会引发异常。learn.microsoft.com/en-us/dotnet/api/......
0赞 IamChandu 6/1/2023
通过 xunit/visual studio 执行时,测试将成功执行。我没有看到 stryker 的实际错误。我只在终端中看到此消息 找到的测试数:项目 33 的 4 个测试失败。Stryker 将继续比赛,但结果将受到影响。
0赞 psfinaki 6/5/2023
这很奇怪。我尝试将 DEBUG 语句放在一些游乐场项目中,事情按预期工作。考虑在此处报告错误并提供更多详细信息:我想理想情况下,一些测试被标记为失败。
0赞 IamChandu 9/20/2023
我有一个管道,可以在我的项目上运行 stryker。debug 语句下的代码块在管道中失败,因为 stryker 不允许我在发布模式下运行扫描。在本地 IDE 上 - 调试模式有效。在服务器上 - 调试代码块失败。如何将 Stryker 配置为在管道下的发布模式下运行

答: 暂无答案