Java服务方法仅用于测试

标签 java service interface

有没有办法只在测试类中使用服务方法(在服务层(接口(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/

相关文章:

c# - 即使正确发送了 SOAP 请求,Axis2 也总是收到空参数?

iphone - 如何打开定位服务

c# - windows服务打不开sql连接

java - 接口(interface)的方法应该抛出异常吗?

java - Eclipse-Tomcat 设置中的错误 - ClassNotFoundException "1catalina.org.apache.juli.FileHandler"

java - 如何使用 Nimbus L&F 更改 JSeparator 的颜色

Java - 如何创建调用接口(interface)方法的泛型类?

PHP 预定义接口(interface)和 SPL - 版本检查是否足够?

java - 使用 Kundera 在 hbase 中使用通用对象类型

java - 在 CentOs 中将 java 应用程序作为服务运行时遇到错误 : nested exception is java. lang.UnsatisfiedLinkError