我正在嘗試對一個類進行單元測試。班級如下@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 hasapplication.properties, contents of it arespring.profiles.active=testAnd application-test.properties hasqueue.name=product.test我的 productService 類如下class ProductService{ @Autowired JmsTemplate jmsTemplate; @Value("${queue.name}") private String queue; public void send(Item i){ jmsTemplate.convertAndSend(queue,i) }}當(dāng)我運行上面的測試用例時,我得到,我得到了 mockito 想要但沒有被調(diào)用,實際上與這個 mock 的交互為零。但是傳遞給 convertAndSend 方法的參數(shù)匹配任何人都可以提出一些解決方案。
1 回答

牛魔王的故事
TA貢獻1830條經(jīng)驗 獲得超3個贊
您注入測試的 bean 似乎不是 Spring 管理的。那這個呢?
@MockBean
private JmsTemplate jmsTemplate;
@Autowired
private ProductService productService;
添加回答
舉報
0/150
提交
取消