3 回答

TA貢獻2037條經驗 獲得超6個贊
您沒有使用 Spring 創建的 MyMessageProcessor 實例并在此行上創建自己的實例。
MyMessageProcessor msgProcessor = new MyMessageProcessor();
您應該改為在測試類中自動裝配 MyMessageProcessor。

TA貢獻1844條經驗 獲得超8個贊
因為您不允許使用 spring 框架創建 MyMessageProcessor,因為 spring 不會注入您的 ArticleServiceImpl
@Configuration
public class Configuration {
@Bean
public MyMessageProcessor mymessageProcessor() {
return new MyMessageProcessor();
}
}
然后 @Autowire MyMessageProcessor 在您的測試類中

TA貢獻1864條經驗 獲得超2個贊
您帖子中的第一個評論鏈接提供了完整的答案,但在您的代碼中,您有 2 個選擇: 1 -MyMessageProcessor msgProcessor自動裝配:
package message.processor;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = Config.class)
public class MyMessageProcessorIT {
@Autowired
private ElasticsearchTemplate elasticsearchTemplate;
@Autowired
private MyMessageProcessor msgProcessor;
...
@Test
void testProcessMessage() {
msgProcessor.processMessage();
}
}
或者,您獲取應用程序上下文并手動自動裝配 bean,在 @Tom 提供的鏈接中,您可以看到因此提到的手動 bean 查找。如果你想創建一個新的 bean,那么 applicationContext 也有一個 autowire 方法。
最好的問候,大衛
添加回答
舉報