gpt4 book ai didi

java - JUnit for Spring mvc 服务方法 void 返回类型

转载 作者:行者123 更新时间:2023-12-01 13:37:45 25 4
gpt4 key购买 nike

这是我的服务类

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.integration.Message;
import org.springframework.integration.MessagingException;
import org.springframework.integration.channel.DirectChannel;
import org.springframework.integration.core.MessageHandler;
import org.springframework.stereotype.Service;

@Service
public class EmailService implements MessageHandler {

@Autowired
@Qualifier("receiveChannel")
private DirectChannel messageChannel;

private final Log logger = LogFactory
.getLog(EmailService.class);

public void init() {
logger.info("initializing...");
System.out.println("INIT");
messageChannel.subscribe(this);
}

@Override
public void handleMessage(Message<?> message) throws MessagingException {
logger.info("Message: " + message);

}
}

对于 init,我想创建一个 JUnit 测试用例。怎么写?

这是我尝试过的。但它不起作用

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration("classpath:webapptest")
@ContextConfiguration(locations = {"classpath:test-applicationcontext.xml"})
public class EmailServiceTest {

@Autowired
private EmailService emailService;

@Test(timeout=600000)
public void testEmailService() throws Exception {
emailService=Mockito.spy(emailService);
Mockito.doNothing().when(emailService).init();
}
}

在控制台中,它不会在 init() 方法中打印记录器或打印语句。

我犯了什么错误?如何编写测试用例?

最佳答案

在您的测试中,您尚未调用init()。如果您不调用 init() 方法,它就不会执行 Mockito.doNothing().when 。就您的代码而言,init() 方法只是一个常规的公共(public)方法。

如果您确实希望在实例化类后调用 init() 方法,则必须使用 @PostConstruct 对其进行注释。注释。

您的测试应该如下所示

@Test(timeout=600000)
public void testEmailService() throws Exception {
.....
emailService.init();
}

由于您创建了一个 spy ,因此您必须调用emailService.init();为了测试工作。目前你没有测试任何东西,只是在你的测试方法中有一堆模拟。此外,全面的测试还包括验证在测试 init 方法时是否调用了 messageChannle.subscribe() 方法。您确实希望通过验证是否调用了 subscribe() 方法来加强测试。

关于java - JUnit for Spring mvc 服务方法 void 返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21135787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com