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