在Java中测试服务层中的void方法[重复]
Posted
技术标签:
【中文标题】在Java中测试服务层中的void方法[重复]【英文标题】:Test a void method in service layer in Java [duplicate] 【发布时间】:2018-09-13 01:46:42 【问题描述】:我正在尝试使用 junit 测试服务类中的 void 方法。我不确定如何测试它。
代码:
public class Service
private static final Logger LOGGER = LogManager.getLogger(Service.class);
private final ServiceDAO serviceDAO;
private final RtyDAO rtyDAO;
public Service(ServiceDAO serviceDAO,
RtyDAO rtyDAO)
this.serviceDAO = serviceDAO;
this.rtyDAO = rtyDAO;
public void voidMethod(JSONObject object)
try
Rty rty = serviceDAO.getSomething();
String output = rtyDAO.persist(rty);
if("TRUE".equalsIgnoreCase(output))
LOGGER.info("Success"):
else
LOGGER.info("Failure"):
由于上述方法无效,我不确定如何测试。我正在尝试如下:
public class ServiceTest
@InjectMocks
Service service;
@Mock
RtyDAO RtyDAO;
@Mock
Rty rty;
@Mock
ServiceDAO serviceDAO;
@Test
public void testVoid()
Mockito.when(serviceDAO.getSomething()).thenReturn(rty);
Mockito.when(rtyDAO.persist(rty)).thenReturn("Success");
//how to test result here if the persisting happened without any issues?
【问题讨论】:
【参考方案1】:正如你所说,方法是 Void,所以很难测试。但是有办法!您可以使用 Mockito 来证明两个调用都正确完成。检查这个答案:Mockito : how to verify method was called on an object created within a method?
【讨论】:
感谢您的回复。但我很难理解验证。它有什么作用? doNothing() 和 Verify() 有什么区别 verify 方法只会验证模拟对象上的方法是否被调用。就是这样。您可以向它传递一个值来验证它是否被调用了 N 次以上是关于在Java中测试服务层中的void方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用junit和mockito为私有void方法编写测试用例[重复]