1. 程式人生 > >idea 的SpringBoot專案做單元測試

idea 的SpringBoot專案做單元測試

SpringBoot專案的一個功能開發完成之後,需要對功能做單元測試,需要專案有單元測試的功能,這個專案是一個新建的專案,所以需要自己弄,下面記載一下步驟。

首先,我們使用點選需要做單元測試的類名,右擊使用idea自帶生成單元測試檔案的功能:
1.點選檔案 -> GO TO -> Test
這裡寫圖片描述
2.
這裡寫圖片描述
3.
這裡寫圖片描述
4.生成測試檔案
這裡寫圖片描述
5.加單元測試註解
這裡寫圖片描述
6.在測試類中新增測試邏輯並執行
這裡寫圖片描述

結果,控制檯報錯:java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=…) with your test
這裡寫圖片描述

從一個國外的帖子看到解決方法:
1.首先建立一個用於所有單元測試類繼承的abstract類:

/**
 * Created by yefuliang on 2018/2/2.
 */

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = BinggouFaApplication.class)//該class是SpringBoot專案的Application
@ActiveProfiles("test")
@WebAppConfiguration
@TestPropertySource({//引用的配置檔案
        "classpath:/status_code_des.properties"
, "classpath:/config.properties", "classpath:/status_des.properties" }) public abstract class SpringBootTestAbstract { }

2.SpringBoot專案的Application類上加@EnableAutoConfiguration 註解

@SpringBootApplication
@RestController
@ComponentScan(basePackages={"**.***.**"})
@ServletComponentScan
(basePackages={"**.***.**"}) @MapperScan(basePackages={"**.***.**"}, sqlSessionFactoryRef = "sqlSessionFactory") @EnableScheduling //定時任務註解 @EnableAutoConfiguration public class BinggouFaApplication { public static void main(String[] args) { SpringApplication.run(BinggouFaApplication.class, args); } }

3.單元測試類繼承剛才新建的abstract類:
這裡寫圖片描述

4.執行測試方法,結果成功執行單元測試
這裡寫圖片描述