有没有办法只在测试类中使用服务方法(在服务层(接口(interface))中实现的方法)?
在我的服务接口(interface)中,我有一个方法,我只想在测试类中使用它 并阻止或向其他未在其应用中使用它的开发人员显示一些警告 managerImpl或者controller等其他宫殿
最佳答案
让我们准确地表述一下:
如果您真的在谈论 Java接口(interface)的方法;那么Java8将允许你提供一个默认的实现,例如可以抛出异常;然后你有非常具体的类来实现这个接口(interface),并且可能会为了测试目的而重写该方法。
如果您谈论的是一般的“接口(interface)”;例如“某个类的方法列表”...那么这种“基本抛出”和“子重写”也可以工作。
当然,第一个答案可能是可见性本身。如果我们不是谈论真实的界面;你至少可以保护方法包;那么使用仅限于同一个包。
另一个选择是关注 ISP并隔离您的界面。如果有一些东西只能用于“测试”;然后考虑将这些东西放入“TestSupportInterface”中;或类似的东西。
但是再说一次;这些想法中的大多数都是“按照惯例”运作的;通过提供用户必须消化的某种信息......但这无法强制执行。
最后:您可以考虑更改您的生产代码。很多时候,您可能不需要这样的“特殊测试 setter/getter ”。换句话说:如果您的测试工作方式类似于“获取 X 的状态。对 X 执行某些操作。再次获取 X 的状态并进行比较”。有时,这可以更改为基于行为的测试(您不检查 X 发生了什么;但您检查 X 对 Y、Z 等做了什么)。
关于Java服务方法仅用于测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37274486/