我对如何进行这些测试感到有些困惑。我知道有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
是公开的,我应该以不同的方式进行测试吗?
答案 0 :(得分:6)
或者,鉴于
Clients
是公开的,我应该以不同的方式进行测试吗?
是:Clients
是您正在测试的单位。如果它没有公开公开GenerateAddresses
,它不是它的表面API的一部分,理论上就是支持该类的内部。
在单元测试中,测试类的可观察行为 - 不要担心它是如何在内部执行的。
答案 1 :(得分:0)
var testClients = new PrivateType(typeof(Clients));
PrivateType
需要一个Type对象而不是符号名称。
但我宁愿建议重新考虑你的测试策略。通常不需要测试私有方法。如果您发现无法通过公共方法获得合适的代码覆盖率,则可能需要进行一些重构。