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

万吉库玛

是否可以为类编写Nunit框架单元测试,该类的方法具有无效的返回类型并且在经典的asp.net中具有受保护或私有的访问说明符。我要澄清一下,因为我是单元测试的初学者。

更新:这是我的void函数,以防万一,如何为此编写单元测试?

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

我认为您在问两个问题:

是否可以为具有方法类型为void返回类型的类编写Nunit框架单元测试?这是可能的,但是您必须以某种方式知道执行该方法期间一切正常。例如,如果引发异常,则测试失败,否则视为成功。此外,如果方法的副作用已更改这些属性,则可以检查其他属性。

是否可以为经典asp.net中具有访问说明符受保护或私有的类编写Nunit框架单元测试?对私有成员和受保护成员进行单元测试是不常见的做法。但是,如果需要,可以通过反射来完成,但是也可以使用internal代替private。在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) == "");

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档