我想实现具有最佳封装的包,但要测试它。如何才能将一个包的包私有成员仅对其他一个(友好)包可见?
答案 0 :(得分:2)
是的,可以做到。有点......
包含私有内容对于相同包中的其他类是可见的,但不一定是相同目录。
您可以将类声明为位于同一个包中,但将其放在另一个目录结构(例如您的测试代码)中,甚至放在另一个项目中。
你提到过测试,所以我假设你想要"看"这些东西在你的测试中。只需将测试类定义为与生产代码位于同一个包(不是相同的目录)中。
答案 1 :(得分:1)
根据定义,package-private成员对包外的类不可见。这表明你正在尝试做一些你不应该做的事情,即使你正在测试。
你可以用吸气剂或反射来解决它,但我首先要看看你是否需要访问这样的成员。如果是内部状态,则不应该对其进行测试。如果不是,那么吸气剂可能是合适的。或者将测试放在同一个包中(但可能存储在不同的目录树中)。