是否可以为具有以下内容的方法编写单元测试: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;
}
}
我想你在问两个问题:
是否可以为具有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) == "");
必须如何处理?这就是您可以在单元测试中验证的内容。