1. 程式人生 > 其它 >8.1單元測試

8.1單元測試

技術標籤:SpringBoot社群專案

Spring Boot Testing
(1)依賴:spring-boot-starter-test
(2)包括:Junit、Spring Test、AssertJ
Test Case
(1)要求:保證測試方法的獨立性
(2)步驟:初始化資料、執行測試程式碼、驗證測試結果、清理測試資料。
(3)常用註解:@BeforeClass(在類初始化之前)、@AfterClass、@Before(每調一個測試方法前)、@After(每調一個測試方法後)。

執行測試方法之前就初始化一份資料,測試之中就用這一份資料,測試完後去驗證結果,最後清理資料,那麼下次測試資料還會初始化,這樣的話測試方法就保證了獨立性。

總之就是利用這些註解,保證測試獨立性。

    //驗證幾個註解的作用

    @Autowired
    private DiscussPostService discussPostService;

    private DiscussPost data;

    //這個方法要在類初始化之前執行的,只執行一次,所以是靜態的
    @BeforeClass
    public static void beforeClass() {
        System.out.println("beforeClass");
    }

    //方法執行之後啟用
    @AfterClass
public static void afterClass() { System.out.println("afterClass"); } //每次掉方法都執行,所以不能是靜態的 @Before public void before() { System.out.println("before"); // // 初始化測試資料 // data = new DiscussPost(); // data.setUserId(111); // data.setTitle("Test Title");
// data.setContent("Test Content"); // data.setCreateTime(new Date()); // discussPostService.addDiscussPost(data); } @After public void after() { System.out.println("after"); // // 刪除測試資料 // discussPostService.updateStatus(data.getId(), 2); } @Test public void test1() { System.out.println("test1"); } @Test public void test2() { System.out.println("test2"); }

在這裡插入圖片描述
完整測試類:
斷言:判斷當前當前條件是否成立,成立就啥也不發生,不成立就拋異常

@RunWith(SpringRunner.class)
@SpringBootTest
@ContextConfiguration(classes = CommunityApplication.class)
public class SpringBootTests {
    //驗證幾個註解的作用

    @Autowired
    private DiscussPostService discussPostService;

    private DiscussPost data;

    //這個方法要在類初始化之前執行的,只執行一次,所以是靜態的
    @BeforeClass
    public static void beforeClass() {
        System.out.println("beforeClass");
    }

    //只在類銷燬的時候執行一次方法執行之後啟用
    @AfterClass
    public static void afterClass() {
        System.out.println("afterClass");
    }


    //每次掉方法都執行,所以不能是靜態的
    @Before
    public void before() {
        System.out.println("before");

        // 初始化測試資料
        data = new DiscussPost();
        data.setUserId(111);
        data.setTitle("Test Title");
        data.setContent("Test Content");
        data.setCreateTime(new Date());
        discussPostService.addDiscussPost(data);
    }

    @After
    public void after() {
        System.out.println("after");

        // 刪除測試資料
        discussPostService.updateStatus(data.getId(), 2);
    }

    @Test
    public void test1() {