【问题标题】:Why Sonarqube is shhowing this Warning S4056: "Use the overload that takes a 'CultureInfo' or 'IFormatProvider' parameter"为什么 Sonarqube 显示此警告 S4056:“使用采用 'CultureInfo' 或 'IFormatProvider' 参数的重载”
【发布时间】:2019-06-09 20:37:16
【问题描述】:

我收到此警告 S4056:当我在这行代码中执行断言时,使用采用“CultureInfo”或“IFormatProvider”参数的重载:

Assert.AreEqual((int)HttpStatusCode.OK, statusCode);

两个参数都是整数,我无法重载此方法来接受解决此警告所需的 FormrProvider,解决此警告的最佳方法是什么?

Sonarqube warning

【问题讨论】:

    标签: c# .net string unit-testing sonarqube


    【解决方案1】:

    对于int的类型似乎没有AreEqual方法的重载,所以参数被解析为String。这就是为什么需要文化参数。为什么不使用它:

    Assert.IsTrue(((int)HttpStatusCode.OK) == statusCode);
    

    【讨论】:

    • 此解决方案隐藏了重要信息。原始代码 + CultureInfo 会产生带有详细信息的错误,例如200 != 203。您的提案显示true 或false。您必须调试测试以获取返回的状态代码的信息。
    猜你喜欢
    • 2013-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-27
    • 1970-01-01
    相关资源
    最近更新 更多