C#test公共静态类的私有静态方法

时间:2016-05-11 12:52:38

标签: c# unit-testing

我对如何进行这些测试感到有些困惑。我知道有PrivateObject来测试私有类和PrivateType来测试私有静态类,但是如何测试PUBLIC静态类的私有静态方法呢?

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

在我的单元测试课中,我尝试了

PrivateType testClients = new PrivateType(Clients);

但我收到了错误

  

&#39;客户&#39;是一种类型,在给定的上下文中无效

错误有点令人困惑,谷歌带给我完全不同的问题。我在使用&#39;客户&#39;错误PrivateType?或者,鉴于Clients是公开的,我应该以不同的方式进行测试吗?

2 个答案:

答案 0 :(得分:6)

  

或者,鉴于Clients是公开的,我应该以不同的方式进行测试吗?

是:Clients是您正在测试的单位。如果它没有公开公开GenerateAddresses,它不是它的表面API的一部分,理论上就是支持该类的内部。

在单元测试中,测试类的可观察行为 - 不要担心它是如何在内部执行的。

答案 1 :(得分:0)

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

PrivateType需要一个Type对象而不是符号名称。

但我宁愿建议重新考虑你的测试策略。通常不需要测试私有方法。如果您发现无法通过公共方法获得合适的代码覆盖率,则可能需要进行一些重构。