spring junit完美解決方案

2021-08-31 04:20:31 字數 2181 閱讀 4599

[b]一.首先講下註解,autowire 與 resource的區別[/b]

@autowired是按型別裝配依賴物件,預設情況下,要求依賴物件必須存在,若允許null值,可以設定它的required屬性為false。如果想使用按名稱裝配,可以結合@qualifier註解一起使用。如:

@autowired @qualifier("xmlbean1")

private xmlbean xmlbean;

@resource和@autowired一樣,也可以標註在字段或屬性的setter方法上,但它預設是按名稱裝配。名稱可以通過@resource的name屬性指定,如果沒有指定name屬性,當註解標註在字段上,即預設取字段的名稱作為bean名稱尋找物件,當註解標註在屬性的setter方法上,即預設取屬性名作為bean名稱尋找依賴物件。當沒有使用name屬性時,如果按照欄位名找不到bean,就會轉而使用按型別裝配的方式進行查詢;但當使用了name屬性,只能按照指定的name查詢bean,當找不到相應的bean時,就會拋異常。

@resource(name="xmlbeanx")

private xmlbean xmlbean;//用於欄位上

[b]二.講解spring測試套件的好處:[/b]

在開發基於spring的應用時,如果你還直接使用junit進行單元測試,那你就錯過了spring為我們所提供的饕餮大餐了。使用junit直接進行單元測試有以下四大不足:

1)導致多次spring容器初始化問題

根據junit測試方法的呼叫流程,每執行乙個測試方法都會建立乙個測試用例的例項並呼叫setup()方法。由於一般情況下,我們在setup()方法中初始化spring容器,這意味著如果測試用例有多少個測試方法,spring容器就會被重複初始化多次。雖然初始化spring容器的速度並不會太慢,但由於可能會在spring容器初始化時執行載入hibernate對映檔案等耗時的操作,如果每執行乙個測試方法都必須重複初始化spring容器,則對測試效能的影響是不容忽視的;

-->使用spring測試套件,spring容器只會初始化一次!

2)需要使用硬編碼方式手工獲取bean

在測試用例類中我們需要通過ctx.getbean()方法從spirng容器中獲取需要測試的目標bean,並且還要進行強制型別轉換的造型操作。這種乏味的操作迷漫在測試用例的**中,讓人覺得煩瑣不堪;

-->使用spring測試套件,測試用例類中的屬性會被自動填充spring容器的對應bean

,無須在手工設定bean!

3)資料庫現場容易遭受破壞

測試方法對資料庫的更改操作會持久化到資料庫中。雖然是針對開發資料庫進行操作,但如果資料操作的影響是持久的,可能會影響到後面的測試行為。舉個例子,使用者在測試方法中插入一條id為1的user記錄,第一次執行不會有問題,第二次執行時,就會因為主鍵衝突而導致測試用例失敗。所以應該既能夠完成功能邏輯檢查,又能夠在測試完成後恢復現場,不會留下「後遺症」;

-->使用spring測試套件,spring會在你驗證後,自動回滾對資料庫的操作,保證資料庫的現場不被破壞,因此重複測試不會發生問題!

4)不方便對資料操作正確性進行檢查

假如我們向登入日誌表插入了一條成功登入日誌,可是我們卻沒有對t_login_log表中是否確實新增了一條記錄進行檢查。一般情況下,我們可能是開啟資料庫,肉眼觀察是否插入了相應的記錄,但這嚴重違背了自動測試的原則。試想在測試包括成千上萬個資料操作行為的程式時,如何用肉眼進行檢查?

-->只要你繼承spring的測試套件的用例類,你就可以通過jdbctemplate在同一事務中訪問資料庫,查詢資料的變化,驗證操作的正確性!

spring提供了一套擴充套件於junit測試用例的測試套件,使用這套測試套件完全解決了以上四個問題,讓我們測試spring的應用更加方便。現在我的專案中已經完成摒棄junit,而採用spring的測試套件,確實帶來了很大的便利。嚴重推薦springer使用這個測試套件。這個測試套件主要由org.springframework.test包下的若干類組成,使用簡單快捷,方便上手。

[b]最後講spring 的 測試套件:[/b]

1.顯示基類,其實就是用來載入配置檔案的

2.接著是我們自己的測試類

public class userassignservicetest extends basejunit4test}}

[b]註解的意思相信大家都明白!就此結束,相信此文會給很多人相當大的幫助![/b]

Struts2 Spring Junit單元測試

使用junit對struts spring系統進行單元測試,好處是不用啟動tomcat等容器。簡單例項 如下 import org.apache.struts2.strutsspringtestcase public class actiontest extends strutsspringtest...

SPRING JUNIT單元測試s

basespringtest package com.asiainfo.test import org.apache.log4j.logger import org.junit.runner.runwith import org.springframework.test.context.contex...

spring junit4 測試web專案

ps 一般來說業務主要是service層,所以本文是對service層的測試,要是想測試controller層,訪問url,可以使用mock 1.依賴 org.springframework spring test 5.1.6.release junit junit 4.12 test 2.建立測試...