java - 在Java中测试服务层的void方法

标签 java unit-testing junit mockito

我正在尝试使用 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?
    }

最佳答案

正如你所说,该方法是Void,因此很难测试。但有一个办法!您可以使用 Mockito 来证明这两个调用均正确完成。检查这个答案:Mockito : how to verify method was called on an object created within a method?

关于java - 在Java中测试服务层的void方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52305544/

相关文章:

java - Libgdx 使矩形移动

python - 如何提取存储在 mock.call 中的参数

unit-testing - 尝试在 TCP 监听器上提供服务时,由于超时,Go 测试模棱两可地失败

c++ - 如何比较两个迭代器以在 VS2013 上进行单元测试?

java - 使用 PowerMock 时出现 ExceptionInInitializerError

java - 如何为 JTree 单元格设置透明背景?

java - 线程值非阻塞聚合的数据结构?

java - 如果在 whenNew 之前,则当 mockStatic 时出现 NullPointerException

java - 在 Android Studio 中哪里可以查看 JUnit 测试结果?

java - 如何为字符串创建正则表达式以匹配 [@username :4]?