如何对不同的类访问级别进行单元测试?

Lie*_*ost 5 unit-testing

我承认 - 在单元测试方面我完全是个新手。我可以很容易地掌握这些概念(测试一件事,中断-修复-测试-重复等),但是我在思考这个问题时遇到了一些问题......

我的任务是重写应用程序的很大一部分,并且我已经很好地掌握了类结构。我们将测试项目与解决方案的其余部分混合在一起,并且所有参考文献都按照我们希望的方式排列。不幸的是,有一些 Friend 类只能从同一命名空间内部访问。就目前情况而言,测试类不是该命名空间的成员,因此我无法直接访问任何真正需要测试的底层方法。

根据我所读到的内容,我可以创建相关类的公共模型并以这种方式进行测试,但我担心有人会在生产代码中进行更改,而不是将其复制到测试代码,完全违背了测试的目的。另一种选择是更改类本身的访问级别,但这会涉及大量开销并需要修改已有的代码。编写接口的想法也出现了,但是为了测试而创建接口的整体结构还没有在管理层中得到落实。

我在这里错过了什么吗?确保这些底层类确实正常运行而不更改对它们的访问权限的最佳方法是什么?

kro*_*old 3

您还可以创建与测试主题位于同一命名空间中的测试主题的子类,并且该子类可以公开测试所需的任何功能。

假设您有某种方法为该子类提供“测试”范围,那么您就可以放心了。(您不希望此类出现在常规代码中,因为它破坏了封装)