C#窗体单元测试

本文关键字:单元测试 窗体 | 更新日期: 2023-09-27 18:25:05

我第一次为现有软件编写单元测试,我的老板要求我编写单元测试大纲/计划。

作为一个非常初级的C#开发人员,我正在努力寻找一种方法来为这个应用程序创建一个测试计划。

我已经建立了一个excel文档,其中有多张表代表我的解决方案中的每个项目。我对如何记录所有可能的结果和输入感到困惑,尤其是在使用void和bool方法时。或者当将模型传递到一个方法中时,其中有许多值被传递。

我如何记录以下2种方法的通过、失败、预期结果,我只需要一个基本的大纲,而不是特定的文档:

public static void ManualEntryToggleStateChanged(bool isChecked)
        {
            /* check for manual entry
             * if manual entry information can be entered
             * focus user to reg no
             */
            moTextboxRegName.ReadOnly = !isChecked;
            moTextboxRegHerd.ReadOnly = !isChecked;
            if (isChecked)
            {
                moTextboxRegHerd.Text = "";
                moTextboxRegName.Text = "";
                moDropDownListBreed.Focus();
            }
        }
  public static void LoadAllLabs(nsHacBusSrv.SortMode Sort = nsHacBusSrv.SortMode.NotSorted)
    {
        try
        {
            moDropDownListLab.DataSource
                = moBusinessServices.GetAllLabs(Sort);
            moDropDownListLab.DisplayMember = "Name";
            moDropDownListLab.ValueMember = "Idn";
            nsTelWinUi.RadListDataItem oDefaultItem
                = new nsTelWinUi.RadListDataItem("", "");
            moDropDownListLab.Items.Add(oDefaultItem);
            moDropDownListLab.SelectedValue = "";
        }
        catch (System.Exception ex)
        {
            Debug.Fail(ex.Message);
            throw;
        }
    }

C#窗体单元测试

为什么要使用Excel?如果我是你,我会在解决方案中添加一个测试项目。转到每个解决方案并为每个方法添加单元测试。如果您有合适的visualstudio插件,它将为您创建所有的测试用例存根。

至于如何测试,这是派对艺术,但主要是科学。这一切都是围绕着这些事情而发生的。"如果测试了以下条件,任何给定的参数都会经过详尽的测试。Min,Min-1,Min+1,Max,Max-1,Max+1。当看到它们字符串时,你必须考虑另外两种特殊情况。empty和null。这只给了你8个排列来详尽地测试所有内容,但你会发现大多数时候你可以根据你正在测试的内容减少测试次数例如,布尔值只有2个排列。但是字符串parm至少有7个排列。

测试的艺术部分围绕着发现模式和确定真正需要多少创伤。例如,两个字符串参数需要7-1个排列来测试所有可能性。46种不同的测试,以获得所有状态,但是,如果你经常仔细查看代码,你也可以大大减少这些数字。

好的测试的关键是不要想尽一切办法,什么都不假设。让测试告诉你代码的健壮性,而不是开发者。

您可以编写一个测试,在其中断言moTextboxRegName和moDropDownListLab对象的指定属性。不过,这假设您有一种方法可以通过api公开这些对象。在进行单元测试时,您必须在编写代码时牢记测试,以便能够测试代码。