【问题标题】:Unit testing using Pex使用 Pex 进行单元测试
【发布时间】:2011-11-18 10:27:42
【问题描述】:

我想使用 Pex 对以下代码进行单元测试:

    private string GetOriginalFieldName(string p)
    {
        var strMapField = string.Empty;
        foreach (GridViewRow row in gdFields.Rows)
        {
            var strOriginal = row.Cells[0].Text;
            var txt = (TextBox)row.Cells[1].FindControl("txt");
            switch (string.Compare(p, strOriginal, true))
            {
                case 0:
                    if (txt.Text != null) return txt.Text;
                    break;
                default:
                    if (string.Compare(p, strOriginal + ":", true) == 0)
                    {
                        if (txt.Text != null) return txt.Text;
                    }
                    else
                    {
                        strMapField = p;
                    }
                    break;
            }
        }
        return strMapField;
    }

此函数从 gridview 行中搜索文本并将输入字符串替换为 gridview 的 mapfield。

如何使用 Pex 进行单元测试?

【问题讨论】:

  • 这不是单元测试的好案例。您需要从表示逻辑(FindControlGridView)中分离出业务逻辑(replace input string with mapfield of gridview

标签: c# unit-testing pex


【解决方案1】:

我认为你不能在这种类型的单元测试中使用 PEX,因为你有一个 GridView (gdFields) 的实例,它需要被实例化才能使测试工作。在这种情况下,您可能需要查看Moles,它是一个隔离框架,可以让您创建一个假的 GridView 控件实例。

您需要以某种方式创建一个带有假文本框等的假 GridView,以便代码在没有 NullReferenceException 的情况下运行。

现在我没有使用 Moles 的经验,所以我不能说 100% 你可以用它创建一个假的 GridView,但一定要看看。不过,PEX 和 Moles 确实可以很好地协同工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2011-11-16
    • 2015-05-28
    相关资源
    最近更新 更多