1. 程式人生 > >Spring Boot 單元測試,注入失敗,報空指標錯誤

Spring Boot 單元測試,注入失敗,報空指標錯誤

我們在使用專案的時候,常常需求去單元測試,去測試我們寫的介面是否可以正常執行.自己在練習Spring Boot 搭建 Redis的時候進行測試.下面是測試類.
/**
 * @author jins
 * @date on 2018/5/6.
 */
@RunWith(SpringJUnit4ClassRunner.class)
public class RedisTest {

    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    @Test
    public void redisTest(){
        stringRedisTemplate.opsForValue().set("ceshi","redis");
        System.out.println(stringRedisTemplate.opsForValue().get("ceshi"));

    }
}

執行的時候發現,直接會報NullPointException,或者是No bean.比較疑惑,自己想這應該是spring 容器裡面沒有注入Bean導致的,我們沒有從spring 容器中拿到 StringRedisTemplate Bean 所以會報錯.然後自己去網上看了一下,缺少了註解 @SpringBootTest ,自己看了下文件.這裡點進去註解顯示以下內容.看了內容知道,通過@SpringBootTest註解,給我們提供了Spring容器管理.加上之後,可以執行.

Annotation that can be specified on a test class that runs Spring Boot based tests.
Provides the following features over and above the regular Spring TestContext
Framework:
註解制定了一個測試類運行了Spring Boot環境。提供了以下一些特性:

Uses SpringBootContextLoader as the default ContextLoader when no specific ContextConfiguration#loader() @ContextConfiguration(loader=...) is defined.
當沒有特定的ContextConfiguration#loader()(@ContextConfiguration(loader=...))被定義那麼就是SpringBootContextLoader作為預設的ContextLoader。

Automatically searches for a SpringBootConfiguration @SpringBootConfiguration when nested @Configuration is not used, and no explicit #classes() classes are
specified.
自動搜尋到SpringBootConfiguration註解的檔案。

Allows custom Environment properties to be defined using the properties() properties attribute}.
允許自動注入Environment類讀取配置檔案。

Provides support for different #webEnvironment() webEnvironment modes,
including the ability to start a fully running container listening on a
WebEnvironment#DEFINED_PORT defined or WebEnvironment#RANDOM_PORT
random port.
提供一個webEnvironment環境,可以完整的允許一個web環境使用隨機的埠或者自定義的埠。

Registers a org.springframework.boot.test.web.client.TestRestTemplate
TestRestTemplate bean for use in web tests that are using a fully running container.
註冊了TestRestTemplate類可以去做介面呼叫。

作者:二月_春風
連結:https://www.jianshu.com/p/72b19e24a602
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。