是否可以为具有以下内容的方法编写单元测试:1)返回类型void,2)访问说明符private或protected

本文关键字:void 返回类型 访问 protected private 说明符 是否 方法 单元测试 | 更新日期: 2023-09-27 18:29:47

是否可以为一个在经典asp.net中具有void返回类型和访问说明符protected或private方法的类编写Nunit框架单元测试。让我澄清一下,因为我是单元测试的初学者。

更新:这是我的void函数在case中的意思,我该如何为此编写单元测试?

        public void function(TextBox txtBox, string Result)
        {
            if (Result.Trim().ToString() == " ")
            {
                txtBox.Text = "";
            }
            else
            {
                txtBox.Text = Result;
            }
        }

是否可以为具有以下内容的方法编写单元测试:1)返回类型void,2)访问说明符private或protected

我想你在问两个问题:

是否可以为具有void返回类型的方法的类编写Nunit框架单元测试这是可能的,但在某种程度上,你必须知道在执行该方法的过程中一切都很顺利。例如,如果抛出异常,则测试失败,否则将被视为成功。此外,如果方法的副作用更改了其他属性,则可以检查这些属性。

是否可以在经典的asp.net中为访问说明符受保护或私有的类编写Nunit框架单元测试对私有和受保护成员进行单元测试是不常见的做法。但是,如果您需要它,它可以通过反射来完成,但您也可以使用internal而不是私有的。在AssemblyInfo.cs中,使用InternalsVisibleTo属性,如下所示:

[assembly:InternalsVisibleTo("UnitTestAssembly")]

只有UnitTestAssembly类才能访问内部成员。成员对其他类保持隐藏状态。UnitTestAssembly必须是单元测试项目/程序集的名称。当程序集是强命名的时,这不起作用;在这种情况下,您必须指定更多。在这种情况下,此链接可能会对您有所帮助。

更新:。。。我该如何为此编写单元测试在定义了function的类中声明一个内部函数:

    internal string GetTextboxText(Textbox txtBox)
    {
        return txtBox.Text;
    }

现在您可以编写单元测试:

  ...
  yourClassInstance.function(myTxtBox, "SomeString");
  Assert.IsTrue(yourClassInstance.GetTextboxText(myTxtBox) == "SomeString");
  ...
  yourClassInstance.function(myTxtBox, " ");
  Assert.IsTrue(yourClassInstance.GetTextboxText(myTxtBox) == "");

但是,当您指定一个空文本框时会发生什么呢?

  yourClassInstance.function(null, " "); // Will probably throw exception
  Assert.IsTrue(yourClassInstance.GetTextboxText(myTxtBox) == "");

必须如何处理?这就是您可以在单元测试中验证的内容。