[英]C# Unit testing - check if a private method was reached
我正在使用C#MOQ库。
可以说我想为这段代码创建一个UnitTest
:
if(condition){
privateMethod();
}
else{
logger.info("didn't hit")
}
我想检查privateMethod
被击中,因为它是私有的,所以无法使用Verify
函数。 我怎样才能做到这一点?
我考虑过添加一个专门用于单元测试的Status
成员,该成员将在退出测试方法之前保留最后一个位置。
不要测试私有方法。 它们是该类的私有实现细节。 您应该只测试执行公共方法的结果。
正确设计的SOLID代码绝不会使您处于需要私人模拟的位置。
根据您是否要更改设计,可以采取以下几种方法:
无论您选择哪个,我都由您决定。 但是,我将再强调一次- 模拟私有方法不是单元测试,库或工具问题-它是设计问题 ,因此最好可以解决。
我使用MSTest,这是我在测试类中调用私有方法的解决方案:
Class target = new Class();
PrivateObject obj = new PrivateObject(target);
var retVal = obj.Invoke("PrivateMethod");
Assert.AreEqual(retVal);
它使用PrivateObject类
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.