一个包中有两个类A和B。每个A对象都有一个B对象的引用。 B实例的状态仅对A可见,这意味着所有B属性都具有程序包可见性。这是由于A类太复杂了-我将其分为两部分(这样做在语义上是正确的)。
B类具有一个执行深度复制的公共方法plicate()(这意味着某些属性将以递归方式深度复制,而对于某些属性,仅复制引用)。
问题是我需要测试重复方法:
是否有一种方法可以使B中的属性仅用于测试可见?
答案 0 :(得分:4)
由于程序包的可见性,我无法将新创建的对象的状态与原始对象的状态进行比较
然后,您的测试设置完全错误。
这是Java单元测试中的默认最佳实践
它们应该驻留在不同 目录中,但存在于 same 包中!
因此,典型的maven项目结构如下:
project-root / src / main / java / my / com / package
和
project-root / src / test / java / my / com / package
当您遵循这种做法时,便可以轻松打包受保护的字段和方法(这就是每个人都以这种方式组织生产和测试类的原因)。