簡體   English   中英

是否可以為以下方法編寫單元測試:1)返回類型為void,2)訪問說明符為private或protected?

[英]Is it possible to write a unit test for the method that has, 1)Return type void, 2)access specifier private or 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而不是私有。 在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) == "");

必須如何處理? 這就是您可以在單元測試中驗證的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM