一種基于Junit的單元測試方法及裝置制造方法
【專利摘要】本申請公開了一種基于Junit的單元測試方法及裝置,其中,方法為:利用預先設置的配置文件對用戶指定的包進行解析,將解析所得的若干個單元測試類確定為目標單元測試類,在針對每一個目標單元測試類進行執行時,先判斷是否存在Spring容器,若沒有,則創建一個包括每一個目標單元測試類執行時所必須的Javabean注冊信息的Spring容器。該Spring容器由于包括每一個目標單元測試類執行時所必須的Javabean注冊信息,因此在執行每一個目標單元測試類時,無需重復建立Spring容器,也即不需要重復初始化Spring容器,大大提高了批量測試執行效率。
【專利說明】—種基于Junit的單元測試方法及裝置
【技術領域】
[0001]本申請涉軟件處理【技術領域】,更具體地說,涉及一種基于Junit的單元測試方法及裝置。
【背景技術】
[0002]單元測試是指對軟件中的最小可測試單元進行檢查和驗證。一般現有技術使用Junit測試框架來進行測試。Junit是一套框架,繼承一個測試用例就可以進行自動測試。多個測試用例組成一組測試用例,一組測試用例需要共同的測試運行環境才能夠執行。
[0003]一般情況下,集成測試需要啟動Spring容器。Spring容器需要包括待執行單元測試類中測試方法所需的JavaBean的注冊。但是,不同單元測試類的測試方法所需的JavaBean的注冊不同,現有技術在執行一組單元測試類時,針對每一個單元測試類都要創建并銷毀一次Spring容器,也即需要重復初始化Spring容器,從而嚴重影響批量測試執行效率。
【發明內容】
[0004]有鑒于此,本申請提供了一種基于Junit的單元測試方法及裝置,用于解決現有技術執行一組單元測試類時,針對每一個單元測試類均需要重復初始化Spring容器,從而影響批量測試執行效率的問題。
[0005]為了實現上述目的,現提出的方案如下:
[0006]一種基于Junit的單元測試方法,包括:
[0007]利用預先設置的配置文件對用戶指定的包進行解析,將解析所得的若干個單元測試類確定為目標單元測試類;
[0008]針對每一個所述目標單元測試類均進行下述處理過程,直至目標單元測試類的測試案例均被執行完畢:
[0009]利用Junit線程調用所述目標單元測試類的每一個測試案例;
[0010]利用預設的基礎測試類檢查當前環境有無Spring容器,若沒有,則創建Spring容器,創建的所述Spring容器包括每一個所述目標單元測試類執行時所必須的Javabean注冊信息;
[0011]利用Junit線程調用并執行所述目標單元測試類的每一個測試案例;
[0012]銷毀所述Spring容器。
[0013]優選地,所述利用Junit線程調用并執行所述目標單元測試類的每一個測試案例,包括:
[0014]利用Junit線程調用所述基礎測試類中的第一預設方法,以完成單元測試的上下文環境的創建;
[0015]利用Junit線程調用并執行所述目標單元測試類的任意一個測試案例;
[0016]在檢測到所述測試案例執行完畢后,銷毀創建的上文下文環境,并返回至所述利用Junit線程調用所述基礎測試類中的第一預設方法,以完成單元測試的上下文環境的創建的步驟,直至所述目標單元測試類的每一個測試案例均被執行完畢。
[0017]優選地,創建的所述Spring容器還包括用于進行效率分析的切面攔截,則在所述利用Junit線程調用并執行所述目標單元測試類的每一個測試案例的同時,所述切面攔截會根據每一個測試案例執行的被測方法的包名、類名和方法名,對被測方法進行類別區分,并記錄執行被測方法所消耗的時間。
[0018]優選地,還包括:
[0019]利用所述切面攔截記錄的數據,生成測試報告。
[0020]優選地,所述利用所述切面攔截記錄的數據,生成測試報告的過程為:
[0021]利用Apache的poi項目操作Excel表單,將所述切面攔截記錄的數據填充至預先設置的模板中,以生成測試報告。
[0022]一種基于Junit的單元測試裝置,包括:
[0023]目標單元測試類確定單元,用于利用預先設置的配置文件對用戶指定的包進行解析,將解析所得的若干個單元測試類確定為目標單元測試類;
[0024]目標單元測試類處理單元,用于針對每一個所述目標單元測試類均進行下述處理過程,直至目標單元測試類的測試案例均被執行完畢:
[0025]利用Junit線程調用所述目標單元測試類的每一個測試案例;
[0026]利用預設的基礎測試類檢查當前環境有無Spring容器,若沒有,則創建Spring容器,創建的所述Spring容器包括每一個所述目標單元測試類執行時所必須的Javabean注冊信息;
[0027]利用Junit線程調用并執行所述目標單元測試類的每一個測試案例;
[0028]Spring容器銷毀單元,用于銷毀所述Spring容器。
[0029]優選地,所述目標單元測試類處理單元在利用Junit線程調用并執行所述目標單元測試類的每一個測試案例時,具體為:
[0030]利用Junit線程調用所述基礎測試類中的第一預設方法,以完成單元測試的上下文環境的創建;
[0031]利用Junit線程調用并執行所述目標單元測試類的任意一個測試案例;
[0032]在檢測到所述測試案例執行完畢后,銷毀創建的上文下文環境,并返回至所述利用Junit線程調用所述基礎測試類中的第一預設方法,以完成單元測試的上下文環境的創建的步驟,直至所述目標單元測試類的每一個測試案例均被執行完畢。
[0033]優選地,創建的所述Spring容器還包括用于進行效率分析的切面攔截,則在所述利用Junit線程調用并執行所述目標單元測試類的每一個測試案例的同時,所述切面攔截會根據每一個測試案例執行的被測方法的包名、類名和方法名,對被測方法進行類別區分,并記錄執行被測方法所消耗的時間。
[0034]優選地,還包括:
[0035]測試報告生成單元,用于利用所述切面攔截記錄的數據,生成測試報告。
[0036]優選地,所述測試報告生成單元包括:
[0037]測試報告生成子單元,用于利用Apache的poi項目操作Excel表單,將所述切面攔截記錄的數據填充至預先設置的模板中,以生成測試報告。
[0038]從上述的技術方案可以看出,本申請實施例提供的基于Junit的單元測試方法,利用預先設置的配置文件對用戶指定的包進行解析,將解析所得的若干個單元測試類確定為目標單元測試類,在針對每一個目標單元測試類進行執行時,先判斷是否存在Spring容器,若沒有,則創建一個包括每一個目標單元測試類執行時所必須的Javabean注冊信息的Spring容器,該Spring容器由于包括每一個目標單元測試類執行時所必須的Javabean注冊信息,因此在執行每一個目標單元測試類時,無需重復建立Spring容器,也即不需要重復初始化Spring容器,大大提高了批量測試執行效率。
【專利附圖】
【附圖說明】
[0039]為了更清楚地說明本申請實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據提供的附圖獲得其他的附圖。
[0040]圖1為本申請實施例公開的一種基于Junit的單元測試方法流程圖;
[0041]圖2為本申請實施例公開的一種針對每一個目標單元測試類處理方法流程圖;
[0042]圖3為本申請實施例公開的一種基于Junit的單元測試裝置結構示意圖。
【具體實施方式】
[0043]下面將結合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例。基于本申請中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。
[0044]參見圖1,圖1為本申請實施例公開的一種基于Junit的單元測試方法流程圖。
[0045]如圖1所示,該方法包括:
[0046]步驟S100、利用預先設置的配置文件對用戶指定的包進行解析,將解析所得的若干個單元測試類確定為目標單元測試類;
[0047]具體地,我們預先設置好了配置文件,規定了哪些單元測試類需要進行測試。通過對用戶指定的包進行解析,將規定的單元測試類確定為目標單元測試類。
[0048]步驟S110、針對每一個所述目標單元測試類均進行處理,直至目標單元測試類的測試案例均被執行完畢;
[0049]具體地,針對每一個目標單元測試類的處理過程,下文將進行詳細介紹。一個單元測試類包括若干個測試案例,每個單元測試類都對應一個被測方法,測試案例的執行過程即為執行被測方法的過程。
[0050]步驟S120、銷毀所述Spring容器。
[0051]具體地,在確定所有的目標單元測試類均已經執行完畢后,銷毀Spring容器。
[0052]接著,我們介紹上文針對每一個目標單元測試類的處理過程,如圖2所示,包括:
[0053]步驟S200、利用Junit線程調用所述目標單元測試類的每一個測試案例;
[0054]步驟S210、利用預設的基礎測試類檢查當前環境有無Spring容器;
[0055]若沒有,則執行步驟S220,若有,則執行步驟S230 ;
[0056]步驟S220、創建Spring容器;
[0057]具體地,創建的所述Spring容器包括每一個所述目標單元測試類執行時所必須的Javabean注冊信息。一個Spring容器只有包括一個單元測試類執行時所必須的Javabean注冊信息時,才能夠完成該單元測試類的執行。
[0058]本實施例創建的Spring容器由于包括每一個所述目標單元測試類執行時所必須的Javabean注冊信息,因此可以適用于每一個目標的那一刻測試類的執行。
[0059]步驟S230、利用Junit線程調用并執行所述目標單元測試類的每一個測試案例。
[0060]本申請實施例提供的基于Junit的單元測試方法,利用預先設置的配置文件對用戶指定的包進行解析,將解析所得的若干個單元測試類確定為目標單元測試類,在針對每一個目標單元測試類進行執行時,先判斷是否存在Spring容器,若沒有,則創建一個包括每一個目標單元測試類執行時所必須的Javabean注冊信息的Spring容器,該Spring容器由于包括每一個目標單元測試類執行時所必須的Javabean注冊信息,因此在執行每一個目標單元測試類時,無需重復建立Spring容器,也即不需要重復初始化Spring容器,大大提高了批量測試執行效率。
[0061]進一步,我們介紹上述步驟S230的實現過程。
[0062]步驟S230可以包括:
[0063]利用Junit線程調用所述基礎測試類中的第一預設方法,以完成單元測試的上下文環境的創建;
[0064]具體地,基礎測試類中設置了單元測試的上下文環境的創建方法,也即上述的第一預設方法。通過調用該方法可以完成上下文環境的創建。
[0065]利用Junit線程調用并執行所述目標單元測試類的任意一個測試案例;
[0066]在檢測到所述測試案例執行完畢后,銷毀創建的上文下文環境,并返回至所述利用Junit線程調用所述基礎測試類中的第一預設方法,以完成單元測試的上下文環境的創建的步驟,直至所述目標單元測試類的每一個測試案例均被執行完畢。
[0067]需要說明的是,建立了上下文環境之后,可以調用并執行一個測試案例,在該測試案例執行完畢后,為了避免下一個測試案例執行的混亂,我們通常需要將建立的上下文環境銷毀,然后重新建立上下文環境。這樣,執行一個測試案例需要重新建立并銷毀一個上下文環境,直至目標單元測試類的所有測試案例均執行完畢。
[0068]更進一步的,上述創建的Spring容器還可以包括用于進行效率分析的切面攔截,則在所述利用Junit線程調用并執行所述目標單元測試類的每一個測試案例的同時,所述切面攔截會根據每一個測試案例執行的被測方法的包名、類名和方法名,對被測方法進行類別區分,并記錄執行被測方法所消耗的時間。其中,進行類別區分時,可以將其分為服務類、數據庫訪問類等。針對每一個被測方法,均記錄其執行過程所消耗的時間。以便后續的效率分析。
[0069]在上述基礎上,本申請的方案還可以包括利用所述切面攔截記錄的數據,生成測試報告的步驟。也即,將切面攔截記錄的類別分類,被測方法執行消耗的時間等信息生成測i式?艮告ο
[0070]具體的在生成測試報告時,可以利用Apache的poi項目操作Excel表單,將所述切面攔截記錄的數據填充至預先設置的模板中,以生成測試報告。并可以將生成的測試報告進行打印。
[0071]下面對本申請實施例提供的基于Junit的單元測試裝置進行描述,下文描述的基于Junit的單元測試裝置與上文描述的基于Junit的單元測試方法可相互對應參照。
[0072]參見圖3,圖3為本申請實施例公開的一種基于Junit的單元測試裝置結構示意圖。
[0073]如圖3所示,該裝置包括:
[0074]目標單元測試類確定單元31,用于利用預先設置的配置文件對用戶指定的包進行解析,將解析所得的若干個單元測試類確定為目標單元測試類;
[0075]目標單元測試類處理單元32,用于針對每一個所述目標單元測試類均進行下述處理過程,直至目標單元測試類的測試案例均被執行完畢:
[0076]利用Junit線程調用所述目標單元測試類的每一個測試案例;
[0077]利用預設的基礎測試類檢查當前環境有無Spring容器,若沒有,則創建Spring容器,創建的所述Spring容器包括每一個所述目標單元測試類執行時所必須的Javabean注冊信息;
[0078]利用Junit線程調用并執行所述目標單元測試類的每一個測試案例;
[0079]Spring容器銷毀單元33,用于銷毀所述Spring容器。
[0080]其中,所述目標單元測試類處理單元在利用Junit線程調用并執行所述目標單元測試類的每一個測試案例時,具體為:
[0081]利用Junit線程調用所述基礎測試類中的第一預設方法,以完成單元測試的上下文環境的創建;
[0082]利用Junit線程調用并執行所述目標單元測試類的任意一個測試案例;
[0083]在檢測到所述測試案例執行完畢后,銷毀創建的上文下文環境,并返回至所述利用Junit線程調用所述基礎測試類中的第一預設方法,以完成單元測試的上下文環境的創建的步驟,直至所述目標單元測試類的每一個測試案例均被執行完畢。
[0084]可選的,創建的所述Spring容器還包括用于進行效率分析的切面攔截,則在所述利用Junit線程調用并執行所述目標單元測試類的每一個測試案例的同時,所述切面攔截會根據每一個測試案例執行的被測方法的包名、類名和方法名,對被測方法進行類別區分,并記錄執行被測方法所消耗的時間。
[0085]進一步,本申請公開的測試裝置還可以包括測試報告生成單元,用于利用所述切面攔截記錄的數據,生成測試報告。
[0086]可選的,所述測試報告生成單元可以包括:
[0087]測試報告生成子單元,用于利用Apache的poi項目操作Excel表單,將所述切面攔截記錄的數據填充至預先設置的模板中,以生成測試報告。
[0088]本申請實施例提供的基于Junit的單元測試裝置,利用預先設置的配置文件對用戶指定的包進行解析,將解析所得的若干個單元測試類確定為目標單元測試類,在針對每一個目標單元測試類進行執行時,先判斷是否存在Spring容器,若沒有,則創建一個包括每一個目標單元測試類執行時所必須的Javabean注冊信息的Spring容器,該Spring容器由于包括每一個目標單元測試類執行時所必須的Javabean注冊信息,因此在執行每一個目標單元測試類時,無需重復建立Spring容器,也即不需要重復初始化Spring容器,大大提高了批量測試執行效率。
[0089]最后,還需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
[0090]本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。
[0091]對所公開的實施例的上述說明,使本領域專業技術人員能夠實現或使用本申請。對這些實施例的多種修改對本領域的專業技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本申請的精神或范圍的情況下,在其它實施例中實現。因此,本申請將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。
【權利要求】
1.一種基于了皿的單元測試方法,其特征在于,包括: 利用預先設置的配置文件對用戶指定的包進行解析,將解析所得的若干個單元測試類確定為目標單元測試類; 針對每一個所述目標單元測試類均進行下述處理過程,直至目標單元測試類的測試案例均被執行完畢: 利用了皿線程調用所述目標單元測試類的每一個測試案例; 利用預設的基礎測試類檢查當前環境有無3即1118容器,若沒有,則創建3即1118容器,創建的所述3即1叩容器包括每一個所述目標單元測試類執行時所必須的了狀處6冊注冊信息; 利用了皿線程調用并執行所述目標單元測試類的每一個測試案例; 銷毀所述3即1叩容器。
2.根據權利要求1所述的測試方法,其特征在于,所述利用了皿線程調用并執行所述目標單元測試類的每一個測試案例,包括: 利用了皿“線程調用所述基礎測試類中的第一預設方法,以完成單元測試的上下文環境的創建; 利用了皿線程調用并執行所述目標單元測試類的任意一個測試案例; 在檢測到所述測試案例執行完畢后,銷毀創建的上文下文環境,并返回至所述利用了皿“線程調用所述基礎測試類中的第一預設方法,以完成單元測試的上下文環境的創建的步驟,直至所述目標單元測試類的每一個測試案例均被執行完畢。
3.根據權利要求1或2所述的測試方法,其特征在于,創建的所述3即1!18容器還包括用于進行效率分析的切面攔截,則在所述利用了皿線程調用并執行所述目標單元測試類的每一個測試案例的同時,所述切面攔截會根據每一個測試案例執行的被測方法的包名、類名和方法名,對被測方法進行類別區分,并記錄執行被測方法所消耗的時間。
4.根據權利要求3所述的測試方法,其特征在于,還包括: 利用所述切面攔截記錄的數據,生成測試報告。
5.根據權利要求4所述的測試方法,其特征在于,所述利用所述切面攔截記錄的數據,生成測試報告的過程為: 利用細3也6的?01項目操作2x^1表單,將所述切面攔截記錄的數據填充至預先設置的模板中,以生成測試報告。
6.一種基于了皿“的單元測試裝置,其特征在于,包括: 目標單元測試類確定單元,用于利用預先設置的配置文件對用戶指定的包進行解析,將解析所得的若干個單元測試類確定為目標單元測試類; 目標單元測試類處理單元,用于針對每一個所述目標單元測試類均進行下述處理過程,直至目標單元測試類的測試案例均被執行完畢: 利用了皿線程調用所述目標單元測試類的每一個測試案例; 利用預設的基礎測試類檢查當前環境有無3即1118容器,若沒有,則創建3即1118容器,創建的所述3即1叩容器包括每一個所述目標單元測試類執行時所必須的了狀處6冊注冊信息; 利用了皿線程調用并執行所述目標單元測試類的每一個測試案例; 3即1叩容器銷毀單元,用于銷毀所述3即1叩容器。
7.根據權利要求6所述的測試裝置,其特征在于,所述目標單元測試類處理單元在利用了皿線程調用并執行所述目標單元測試類的每一個測試案例時,具體為: 利用了皿“線程調用所述基礎測試類中的第一預設方法,以完成單元測試的上下文環境的創建; 利用了皿線程調用并執行所述目標單元測試類的任意一個測試案例; 在檢測到所述測試案例執行完畢后,銷毀創建的上文下文環境,并返回至所述利用了皿“線程調用所述基礎測試類中的第一預設方法,以完成單元測試的上下文環境的創建的步驟,直至所述目標單元測試類的每一個測試案例均被執行完畢。
8.根據權利要求6或7所述的測試裝置,其特征在于,創建的所述3即1叩容器還包括用于進行效率分析的切面攔截,則在所述利用了皿線程調用并執行所述目標單元測試類的每一個測試案例的同時,所述切面攔截會根據每一個測試案例執行的被測方法的包名、類名和方法名,對被測方法進行類別區分,并記錄執行被測方法所消耗的時間。
9.根據權利要求8所述的測試裝置,其特征在于,還包括: 測試報告生成單元,用于利用所述切面攔截記錄的數據,生成測試報告。
10.根據權利要求9所述的測試裝置,其特征在于,所述測試報告生成單元包括: 測試報告生成子單元,用于利用細狀“的?01項目操作2x^1表單,將所述切面攔截記錄的數據填充至預先設置的模板中,以生成測試報告。
【文檔編號】G06F11/36GK104317722SQ201410641300
【公開日】2015年1月28日 申請日期:2014年11月13日 優先權日:2014年11月13日
【發明者】陳炙, 邢磊, 王戎, 聶砂, 安興朝, 丁林 申請人:中國建設銀行股份有限公司