在C#中,测试/注入私有字段的良好实践是什么?

10 浏览
0 Comments

在C#中,测试/注入私有字段的良好实践是什么?

非常抱歉如果这是个重复的问题。我被分配了一个任务,需要为这个方法添加一些覆盖,并被告知要模拟私有的List属性。我的问题是:有没有一种方法来测试私有字段?我找到的解决方案是添加一个新的构造函数,只是为了注入这个私有列表。我不确定这是否是正确的方法,所以非常感谢任何帮助。

0
0 Comments

问题的出现的原因:

- 需要测试私有方法可能意味着设计可能不正确。

解决方法:

- 使用测试驱动开发(TDD)的方法,优先考虑测试并重新构建类。

- 修改方法的参数,使其接受和返回适当的参数类型。

示例代码:

public List Do_Complex_Logic(List input)

私有方法的测试通常意味着设计存在问题。

0
0 Comments

在C#中,测试和注入私有字段和方法不是一个好的做法。应该测试接口的行为,而不是私有的字段和方法。然而,有一些解决方法可以尝试:

选项A:

将私有成员改为internal,并为被测试的程序集设置InternalsVisibleTo属性。

选项B:

编写一个包装类,将私有字段和方法包装成公有的。这种方法的好处是不需要将私有方法改为internal,但缺点是每个私有方法都需要一个包装的公有方法,因此方法的数量可能会翻倍。

通过使用以上两种方法中的一种,可以在C#中测试和注入私有字段。

0
0 Comments

在C#中,测试或注入私有字段的良好实践有什么?

一个类的私有逻辑应该在其行为的公共表达中可见。换句话说,理论上说,根本不需要测试私有字段。

没有直接测试私有字段的方法;毕竟它们是私有的。如果您真的认为需要测试私有字段,那么我建议将其更改为internal,并通过[InternalsVisibleTo]属性将其暴露给您的单元测试程序集。

话虽如此,有一些框架允许这样的事情,比如TypeMock。

0