我知道有很多关于类内私有(private)成员的单元测试的问题。他们中的大多数人得出的结论是,需要测试的私有(private)成员是一个需要重构的设计缺陷(例如,参见 here )。不过我还有最后一个问题:
当我将私有(private)成员重构为新类时,它们成为(公共(public))API 成员,但我打算避免这种情况。因此,通过简化我们的客户端类,我们通过设计一个新的公开可见的帮助程序类来污染我们的 API。当然,人们也可以在程序集中编写测试代码并将这些帮助程序置于内部,但因此我们也将测试代码发送到生产站点。
我认为这个问题没有正确的答案,但也许您有一些好主意可以帮助避免这些情况?
最佳答案
关于 C#,您可以尝试最后一个技巧
- 将您的
类
/成员设为内部
- 在要测试的程序集中,打开 AssemblyInfo.cs 文件,并通过添加以下属性使内部结构对您的测试项目/程序集可见:
[InternalsVisibleTo("YourTestProject")]
这会使您的成员在程序集之外不可见,除非是为了在“YourTestProject”程序集内进行测试。
有关此属性的更多信息可以找到 on MSDN .
关于java - 公开成员以对其进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32198198/