使用本地化字符串,单位测试代码覆盖率不是100%

时间:2013-04-08 22:12:51

标签: c# asp.net-mvc unit-testing

我们正在努力使我们的单元测试代码覆盖率尽可能接近100%。我们做得相当不错,但由于本地化字符串(设计为优雅地失败),结果看起来比实际情况要差得多。

以下是我的模型中未涵盖的代码示例:

    #region strings
    public string AllStr { get { return Localizer.GetString("Resources.Order.Status", "all", "all"); } }
    public string ArchivedStr { get { return Localizer.GetString("Resources.Order.Status", "archived", "archived"); } }
    public string Closed30Str { get { return Localizer.GetString("Resources.Order.Status", "closed30", "closed30"); } }
    public string Closed90Str { get { return Localizer.GetString("Resources.Order.Status", "closed90", "closed90"); } }
    public string GoStr { get { return Localizer.GetString("Resources.Global", "go", "go"); } }
    public string OpenStr { get { return Localizer.GetString("Resources.Order.Status", "open", "open"); } }
    public string OrderStatusStr { get { return Localizer.GetString("Resources.Order.Status", "orderStatus", "orderStatus"); } }
    public string SelectedCustStr { get { return Localizer.GetString("Resources.Order.Status", "selectedCust", "selectedCust"); } }
    public string StartTypingStr { get { return Localizer.GetString("Resources.Order.Status", "startTyping", "startTyping"); } }
    public string TitleStr { get { return Localizer.GetString("Resources.Order.Status", "title", "title"); } }
    #endregion

我真的不想在我的应用程序中添加数百个字符串来进行单元测试,但我也不希望它们影响覆盖率结果。

如何从代码覆盖率分析中排除这些字符串,以便更准确地了解重要的测试?

1 个答案:

答案 0 :(得分:2)

您正在寻找ExcludeFromCodeCoverage Attribute。将其应用于您的代码会将其从代码覆盖率结果中排除。

[ExcludeFromCodeCoverage]
public string AllStr { get { return Localizer.GetString("Resources.Order.Status", "all", "all"); } }

问题确实是......为什么你会想要添加这些以获得100%的代码覆盖率? 100%的代码覆盖率不会告诉开发人员有关项目的任何信息。对你的经理来说,这是一个吹牛的要点。