【问题标题】:Test a void method in service layer in Java [duplicate]在Java中测试服务层中的void方法[重复]
【发布时间】: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?
    }

【问题讨论】:

    标签: java unit-testing junit mockito


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回复。但我很难理解验证。它有什么作用? doNothing() 和 Verify() 有什么区别
    • verify 方法只会验证模拟对象上的方法是否被调用。就是这样。您可以向它传递一个值来验证它是否被调用了 N 次
    猜你喜欢
    • 1970-01-01
    • 2022-01-03
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    • 1970-01-01
    • 2020-03-17
    相关资源
    最近更新 更多