非常抱歉如果这是个重复的问题。我被分配了一个任务,需要为这个方法添加一些覆盖,并被告知要模拟私有的List属性。我的问题是:有没有一种方法来测试私有字段?我找到的解决方案是添加一个新的构造函数,只是为了注入这个私有列表。我不确定这是否是正确的方法,所以非常感谢任何帮助。
List
问题的出现的原因:
- 需要测试私有方法可能意味着设计可能不正确。
解决方法:
- 使用测试驱动开发(TDD)的方法,优先考虑测试并重新构建类。
- 修改方法的参数,使其接受和返回适当的参数类型。
示例代码:
public List Do_Complex_Logic(List input)
私有方法的测试通常意味着设计存在问题。
在C#中,测试和注入私有字段和方法不是一个好的做法。应该测试接口的行为,而不是私有的字段和方法。然而,有一些解决方法可以尝试:
选项A:
将私有成员改为internal,并为被测试的程序集设置InternalsVisibleTo属性。
选项B:
编写一个包装类,将私有字段和方法包装成公有的。这种方法的好处是不需要将私有方法改为internal,但缺点是每个私有方法都需要一个包装的公有方法,因此方法的数量可能会翻倍。
通过使用以上两种方法中的一种,可以在C#中测试和注入私有字段。
在C#中,测试或注入私有字段的良好实践有什么?
一个类的私有逻辑应该在其行为的公共表达中可见。换句话说,理论上说,根本不需要测试私有字段。
没有直接测试私有字段的方法;毕竟它们是私有的。如果您真的认为需要测试私有字段,那么我建议将其更改为internal,并通过[InternalsVisibleTo]属性将其暴露给您的单元测试程序集。
话虽如此,有一些框架允许这样的事情,比如TypeMock。
用户名或电子邮箱地址
密码