簡體   English   中英

公共靜態類的C#測試私有靜態方法

[英]C# test private static method of public static class

我對如何執行這些測試有些困惑。 我知道存在PrivateObject測試私有類的PrivateTypePrivateType測試私有靜態類的PrivateObject的存在,但是我如何測試PUBLIC靜態類的私有靜態方法?

public static class Clients {
    // CUT
    private static List<string> GenerateAddresses(string AppPath) {
        // CUT
    }
}

在單元測試課上,我嘗試了

PrivateType testClients = new PrivateType(Clients);

但我得到了錯誤

“客戶”是一種類型,在給定的上下文中無效

該錯誤有點令人困惑,Google將我帶到了完全不同的問題。 我在PrivateType使用“客戶端”錯誤嗎? 還是鑒於Clients是公開的,我應該以其他方式進行測試嗎?

還是鑒於Clients是公開的,我應該以其他方式進行測試嗎?

是: Clients是您要測試的單元。 如果它不公開公開GenerateAddresses ,則它不是其表面​​API的一部分,並且從理論上講,它只是在支持該類的內部。

在單元測試中,測試類的可觀察行為-不必擔心它在內部如何進行。

var testClients = new PrivateType(typeof(Clients));

PrivateType需要Type對象而不是符號名稱。

但是我寧願建議您重新考慮您的測試策略。 通常不需要測試私有方法。 如果發現無法從公共方法中獲得不錯的代碼覆蓋率,則可能需要進行一些重構。

暫無
暫無

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

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