我正在尝试对课程进行单元测试。该类如下
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=MyConfig.class)
Class MyTest{
@Mock
pirvate JmsTemplate jmsTemplate;
@InjectMocks
private final ProductService productService= new ProductService();
@Test
public void sendItem(){
Item i = new Item();
i.name("xyz");
productService.send(i)
verfity(jmsTemplate).convertAndSend("product.test",i)
}
}
@Configuration
@PropertySource(classpath:application-test.properties)
class MyConfig{
@Bean
ProductService productService(){
return new ProductService();
}
@Bean
JmsTemplate jmsTemplate(){
return new JmsTemplate();
}
}
resources folder under test package has
application.properties, contents of it are
spring.profiles.active=test
And application-test.properties has
queue.name=product.test
我的productService类如下
class ProductService{
@Autowired
JmsTemplate jmsTemplate;
@Value("${queue.name}")
private String queue;
public void send(Item i){
jmsTemplate.convertAndSend(queue,i)
}
}
当我运行上述测试用例时,
我得到了通缉,但未被调用,
实际上,与该模拟游戏的互动为零。
但是参数传递给convertAndSend方法匹配
谁能提出一些解决方案。
最佳答案
您注入到测试中的bean似乎不是由Spring管理的。那这个呢?
@MockBean
private JmsTemplate jmsTemplate;
@Autowired
private ProductService productService;
关于java - 无法运行Junit案例。抛出错误“实际上与该模拟互动为零”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53242505/