繁体   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