Spring Boot 單元測試,注入失敗,報空指標錯誤
阿新 • • 發佈:2019-01-05
我們在使用專案的時候,常常需求去單元測試,去測試我們寫的介面是否可以正常執行.自己在練習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 來源:簡書 著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。