簡體   English   中英

Autowired 字段上的空指針異常

[英]Null pointer exception on Autowired field

我得到了以下 Java 類,要求我編寫一些單元測試。 我應該提一下,我是 Java 新手,尤其是 Spring 框架。

@Component
@Slf4j
public class SmsInboundManager {

    @Autowired
    private ApplicationContext context;

    @Autowired
    private MessageService messageService;
    /* methods
       ...
     */
}

基本上,我想創建這個類的一個實例,然后在不同的參數上測試方法並做通常的業務。 所以我進行了如下操作:

public class SmsInboundManagerTest{
    @Autowired
    SmsInboundManager manager;
/*tests */
}

但是,我在 manager 上收到了空指針異常

一位同事建議在測試類中使用以下一些注釋:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "..." })

但我沒有運氣。 關於如何解決它的任何想法?

由於 SmsInboundManagerTest 不是 Spring 管理的實例,因此您收到 NullPointerException。 您可以在此處找到更多詳細信息。 另外我看到您正在使用字段依賴注入。 這被認為是不好的做法(您可以在此處查看一些原因)。 相反,您應該使用方法依賴注入或構造函數依賴注入。 您可以在此處找到更多詳細信息。

為了回答你的問題,在測試類中你應該模擬 MessageService 對象,你不應該注入它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM