两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種單元測試代碼生成方法及裝置的制作方法

文檔序號:6362880閱讀:219來源:國知局
專利名稱:一種單元測試代碼生成方法及裝置的制作方法
技術領域
本發(fā)明涉及單元測試技術,尤其涉及一種單元測試代碼生成方法及裝置。
背景技術
單元測試是集中對源代碼實現(xiàn)的每一個程序單元進行測試,檢測各個程序單元否正確地實現(xiàn)了規(guī)定的功能,以及檢查各程序模塊的返回值是否正確。單元測試檢測每一個控制結構的分支以確保完全覆蓋和最大可能的錯誤檢查。JUnit單元測試代碼則是指按一定規(guī)范進行編寫的單元測試代碼,對應的JUnit測試工具需要根據(jù)該JUnit單元測試代碼, 才能統(tǒng)計出覆蓋率、正確性、數(shù)據(jù)校驗等信息。單元測試是為了盡可能多的發(fā)現(xiàn)程序的錯誤。而發(fā)現(xiàn)錯誤,是為了修正錯誤,是需要對程序代碼進行修改的。每當程序代碼被修改的時候,程序配置的某些方面,例如文檔或者數(shù)據(jù),也會被修改。目前,當程序員編寫完項目代碼后,需要在源代碼中手動添加單元測試代碼來檢驗源代碼的正確性。這種方法需要修改大量的程序代碼,從而工作量大,耗時、重復性工作很大,從而使得編碼效率較低。

發(fā)明內(nèi)容
本發(fā)明實施例所要解決的技術問題在于,提供一種單元測試代碼生成方法及裝置,能夠自動生成模版化的單元測試代碼,降低程序員編寫代碼的工作量,提高了工作效率。為了解決上述技術問題,本發(fā)明實施例提供了一種單元測試代碼生成方法,包括
導入源代碼集,所述源代碼集包括至少一個源代碼文件;
根據(jù)所述源代碼集的目錄規(guī)則,依次獲取各個源代碼文件所包含的操作單元,以及與該操作單元對應的參數(shù)屬性;
當每獲取一個源代碼文件的操作單元以及對應的參數(shù)屬性后,獲取預先定義的配置文件中的單元測試代碼編寫規(guī)則;并根據(jù)所述單元測試代碼編寫規(guī)則和所述源代碼文件的操作單元和對應的參數(shù)屬性,生成對應的單元測試代碼。其中,所述源代碼文件為Java文件,所述單元測試代碼編寫規(guī)則為JUnit單元測試代碼編寫規(guī)則。其中,所述根據(jù)所述單元測試代碼編寫規(guī)則和所述源代碼文件的操作單元和對應的參數(shù)屬性,生成對應的單元測試代碼的步驟,具體包括
根據(jù)所述源代碼文件的目錄結構,生成對應目錄以及該目錄下的空白目標文件;
根據(jù)所述單元測試代碼編寫規(guī)則和所述源代碼文件的操作單元和對應的參數(shù)屬性,在所述空白的目標文件中生成單元測試代碼。其中,所述依次獲取各個源代碼文件所包含的操作單元,以及與操作單元對應的參數(shù)屬性具體包括
依次分析各個所述源代碼文件的結構,并根據(jù)Java語言反射機制對所述源代碼文件從上至下進行解釋,得到所述源代碼文件的多個操作單元,以及與每一個操作單元對應的參數(shù)屬性。其中,所述操作單元對應的參數(shù)屬性包括輸入?yún)?shù)、參數(shù)類型及返回值。其中,所述JUnit單元測試代碼編寫規(guī)則包括類名后置名詞為“Test”;操作單元名的前置名詞為“test” ;對應于該操作單元的測試函數(shù)無返回值。本發(fā)明還提供了一種單元測試代碼生成裝置,包括
源代碼集導入模塊,用于導入源代碼集,所述源代碼集包括至少一個源代碼文件;
源代碼文件屬性獲取模塊,用于根據(jù)所述源代碼集的目錄規(guī)則,依次獲取各個所述源代碼文件的操作單元,以及對應于所述操作單元的參數(shù)屬性;
代碼編寫規(guī)則獲取模塊,用于在所述源代碼文件屬性獲取模塊每獲取到一個源代碼文件的操作單元和對應的參數(shù)屬性時,獲取預先定義的配置文件中的單元測試代碼編寫規(guī)則;
代碼自動生成模塊,用于根據(jù)所述源代碼文件的操作單元、參數(shù)屬性和所述單元測試代碼編寫規(guī)則,生成對應的單元測試代碼。其中,所述源代碼文件為Java文件,所述單元測試代碼編寫規(guī)則為JUnit單元測試代碼編寫規(guī)則。其中,所述代碼自動生成模塊包括
文件生成子模塊,用于根據(jù)所述源代碼文件的目錄結構,生成對應目錄以及該目錄下的空白目標文件;
代碼生成子模塊,用于根據(jù)所述單元測試代碼編寫規(guī)則和所述源代碼文件的操作單元和對應的參數(shù)屬性,在所述空白的目標文件中生成單元測試代碼。其中,所述源代碼文件屬性獲取模塊包括
結構分析子模塊,用于分析所述源代碼文件的結構;
屬性獲取子模塊,用于根據(jù)Java語言反射機制對所述源代碼文件從上至下進行解釋, 得到所述源代碼文件的多個操作單元,以及每一個操作單元的參數(shù)屬性。實施本發(fā)明實施例,具有如下有益效果
本發(fā)明的單元測試代碼生成方法通過從預先定義的配置文件中獲取單元測試代碼編寫規(guī)則,再結合所獲取的源代碼文件的操作單元和對應的參數(shù)屬性,自動生成對應于該源代碼文件的單元測試代碼,使得當需要進行測試時,可直接將該單元測試代碼在JUnit軟件中執(zhí)行即可,從而不需要程序員手動來編寫單元測試代碼,使得程序員只需根據(jù)方法的實際要求,修改參數(shù)即可,進而降低了程序員的工作量;并且通過本發(fā)明實施例的方法及裝置生成的代碼,用JUnit軟件統(tǒng)計覆蓋正確性能夠達到20%左右,剩下的代碼自行做出小的參數(shù)修改就能正確執(zhí)行。


為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I是本發(fā)明的單元測試代碼生成方法的一實施例的流程圖2是本發(fā)明的單元測試代碼生成方法的一實施例中的配置文件的示意圖3是本發(fā)明的單元測試代碼生成方法的一實施例中源代碼的示意圖4是本發(fā)明的單元測試代碼生成方法的一實施例中生成的單元測試代碼的示意圖; 圖5是本發(fā)明的單元測試代碼生成裝置的一實施例的功能模塊圖。
具體實施例方式下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。參見圖1,為本發(fā)明的單元測試代碼生成方法的一實施例的流程圖。具體實施時, 本發(fā)明實施例的單元測試代碼生成方法包括
S101,導入源代碼集,該源代碼集包括至少一個源代碼文件。具體實施時,首先在JUnit軟件中,創(chuàng)建一個項目工程,其次再將由多個源代碼文件組成的源代碼集導入該項目工程內(nèi)。在一具體實施例中,該源代碼文件為Java文件。S102,根據(jù)源代碼集的目錄規(guī)則,依次獲取各個源代碼文件的操作單元以及與該操作單元對應的參數(shù)屬性。具體實施時,由于被測試的源代碼集包括多個源代碼文件,即該源代碼集所在子目錄中包括了多個源代碼文件,從而可根據(jù)該子目錄中個存儲的源代碼文件的順序依次獲取各個源代碼文件的多個操作單元以及與操作單元對應的參數(shù)屬性。本實施例中“依次獲取”是指獲取到一個源代碼文件的操作單元和對應的參數(shù)屬性,并結合獲取的單元測試代碼編寫規(guī)則生成對應該源代碼文件的單元測試代碼后,遞歸到該源代碼文件所在子目錄, 再獲取下一個源代碼文件的操作單元和對應的參數(shù)屬性,并結合再次獲取的單元測試代碼編寫規(guī)則生成對應該下一個源代碼文件的單元測試代碼,直至生成對應于所有源代碼文件的單元測試代碼。本實施例中的“目錄規(guī)則”可以是實驗員根據(jù)項目需要進行設定的各個源代碼文件排列順序,也可以是按照各個源代碼文件的大小、修改時間等排列的順序。具體實施時,獲取各個源代碼文件的操作單元以及與該操作單元對應的參數(shù)屬性時,需要分析該源代碼文件的結構,并利用Java語言的反射機制自對該源代碼文件從上至下進行解釋,得到該源代碼文件包括的多個操作單元,以及每個操作單元的輸入?yún)?shù)、參數(shù)類型、返回值等參數(shù)屬性。本實施例中各該源代碼文件的操作單元是指該源代碼文件中實現(xiàn)一個功能的一段程序單元,參數(shù)屬性是指該程序單元包括的輸入?yún)?shù)/參數(shù)類型/返回值等,例如,一個源代碼文件中包括實現(xiàn)“加法”功能的一個程序單元,且該程序單元包括類型為整數(shù)的輸入?yún)?shù),并返回相加的結果,其中,該實現(xiàn)“加法”的程序單元即為操作單元。而由多個操作單元組成的集合為類,其對應的參數(shù)屬性即為類屬性,例如一個人為一個類,則該類的參數(shù)屬性包括高度、年齡等類屬性,而這個人執(zhí)行的“打電話”、“跑步”等操作即為一個操作單元 (或者方法)。S103,每當獲取一個源代碼文件的操作單元和對應的參數(shù)屬性后,獲取預先定義的配置文件中的單元測試代碼編寫規(guī)則。具體實施時,需要預先定義配置文件,該配置文件包括JUnit單元測試代碼編寫規(guī)則,即在步驟SlOl之前,需要預先定義配置文件,即將在 JUnit軟件中進行單元測試代碼編寫的規(guī)則統(tǒng)一歸納到該配置文件中;然后獲取該單元測試代碼編寫規(guī)則時再加載該配置文件,并獲取其中的JUnit單元測試代碼編寫規(guī)則。在一具體實施例中,該JUnit單元測試代碼編寫規(guī)則包括
類名的后置名詞為“Test”;
創(chuàng)建測試函數(shù)聲明;具體實施時,創(chuàng)建測試函數(shù)聲明包括操作單元名的前置名詞為 “test”,即為操作單元名添加前置名詞“test”,從而構成測試該操作單元的測試函數(shù)的函數(shù)名,參見圖2,該編寫規(guī)則在配置文件中如下“〈method_suffix>test〈/method_suffix> < !-測試函數(shù)前綴一>”,或者測試函數(shù)的后置名詞為“test”;對應該操作單元的測試函數(shù)無返回值、無輸入?yún)?shù),即測試函數(shù)必須聲明為“void”;在另一具體實施例中,還可包括在測試函數(shù)的上一行增加“Otest”,參見圖2中的“<method_JPA>@Test〈/method_JPA>” ; 預定義源代碼文件中的操作單元的輸入?yún)?shù)和預期結果,并調(diào)用源代碼文件中的操作單元。本發(fā)明實施例中的“預定義”是指源代碼文件的操作單元的輸入?yún)?shù)類型的默認值, 即Java中基本數(shù)據(jù)類型默認值。本實施例中Java的基本數(shù)據(jù)類型默認值為 short: O; int: O; long:0 ; float: O. O ; double: 0.0; char: (int) char=0 ; String:null ;
boolean: false ; Java中對象引用默認值為null。本實施例中的預期結果也為自定義默認值,即需要預先自定義一個該源代碼文件操作單元的返回值,即預期結果,從而通過比較所調(diào)用源代碼文件的操作單元后實際返回的結果,與該自定義預期結果是否一致,以驗證實際的源代碼文件中操作單元的執(zhí)行結果的正確性。本實施例中測試函數(shù)的內(nèi)部實現(xiàn)代碼實際上是調(diào)用源代碼文件中的操作單元,而調(diào)用源代碼文件中的操作單元時,需要傳入的參數(shù)是自定義默認值;并且需要預先自定義預期結果,從而通過比較所調(diào)用源代碼文件的操作單元后返回的結果,與測試前自定義預期結果是否一致,以驗證實際的源代碼文件中操作單元的執(zhí)行結果的正確性。S104,根據(jù)單元測試代碼編寫規(guī)則和源代碼文件的操作單元和對應的參數(shù)屬性, 生成對應的單元測試代碼。具體實施時,該步驟S104包括
根據(jù)該源代碼文件的目錄結構生成對應的目錄以及該目錄下的空白目標文件,且該空白目標文件的文件名后置名詞為“Test”。在一具體實施例中,首先分析該源代碼文件的目錄結構,得到該源代碼文件的目錄結構d /com/coship/ngod/a7/foldercontents/dao/ impl/GetFolderContentsDaoImpl. java,根據(jù)該目錄結構生成對應的目錄及該目錄下的空白目標文件,該目標文件的目錄結構為
d : / com/coship/ngod/a 7/foldercontents/dao/impl/ GetFoIderContentsDaoImpITest. java ;并且該目標文件的后置名詞為“Test”,即在被測試源代碼文件文件名的后面加上“Test ”。
根據(jù)單元測試代碼編寫規(guī)則和源代碼文件的操作單元和對應的參數(shù)屬性,在空白的源代碼文件中生成對應的單元測試代碼。參見圖3和圖4,分別為本發(fā)明實施例的部分 Java源代碼和生成的對應的單元測試代碼。其中,在被測試的Java源代碼文件的操作單元的名稱“getNGODAssetByAssetFileldO ”前添加“test”,從而構成測試函數(shù)的函數(shù)名,用于與被測試的該操作單元名稱相區(qū)分;同時在該測試函數(shù)名上一行添加了 “OTest”,用于聲明以下內(nèi)容為測試函數(shù),并且將該測試函數(shù)聲明為“void”,即該測試函數(shù)無返回值、無輸入?yún)?shù);“getNGODAssetByAssetFileId(assetFileId) ”為調(diào)用源代碼文件的一個操作單元,其輸入?yún)?shù)assetFileld自定義默認為O ;assertNotNull O為預定義結果不為空。當 JUint軟件執(zhí)行該生成的單元測試代碼時,比較是否該源代碼文件的該操作單元的執(zhí)行結果Integer是否為空,若不為空,即與預期結果相同,則該源代碼文件的該操作單元“getNG ODAssetByAssetFileId(assetFileld) ” 正確。本發(fā)明的單元測試代碼生成方法通過每獲取一個源代碼文件的參數(shù)屬性以及操作單元時,再從該配置文件中獲取單元測試代碼編寫規(guī)則,并結合這三者自動生成對應于該源代碼文件的單元測試代碼,再遞歸到該源代碼文件所在子目錄,即源代碼集目錄下,獲取下一個源代碼文件的操作單元以及對應的參數(shù)屬性,同時再次獲取單元測試代碼編寫規(guī)則,并結合三者自動生成對應單元測試代碼,直至生成對應于所述源代碼文件的單元測試代碼為止。本發(fā)明實施例的單元測試代碼生成方法通過結合配置文件中的單元測試代碼編寫規(guī)則,以及源代碼文件的操作單元和對應的參數(shù)屬性來自動生成模板化的單元測試代碼,使得當需要進行測試時,可直接將該生成的單元測試代碼在JUnit軟件中執(zhí)行即可,從而不需要程序員手動來編寫單元測試代碼,使得程序員只需根據(jù)方法的實際要求,修改參數(shù)即可,進而降低了程序員的工作量;并且通過本發(fā)明實施例的方法生成的代碼,用JUnit 軟件統(tǒng)計覆蓋正確性能夠達到20%左右,剩下的代碼自行做出小的參數(shù)修改就能正確執(zhí)行?;谏鲜龅膯卧獪y試代碼生成方法,本發(fā)明還提供了一種單元測試代碼生成裝置,下面結合附圖對本發(fā)明實施例的單元測試代碼生成系統(tǒng)進行詳細的說明。參見圖5,為本發(fā)明的單元測試代碼生成裝置的一實施例的功能模塊圖。具體實施時,本發(fā)明實施例的單元測試代碼生成裝置包括
被測試集導入模塊11,用于導入源代碼集,該源代碼集包括至少一個源代碼文件;在一具體實施例中,源代碼文件為Java文件;
源代碼文件屬性獲取模塊12,用于根據(jù)所述源代碼集的目錄規(guī)則,依次獲取各個源代碼文件的操作單元以及對應的參數(shù)屬性;具體實施時,該源代碼文件屬性獲取模塊12獲取到一個源代碼文件的操作單元和對應的參數(shù)屬性后,等待生成對應的單元測試代碼,當生成對應于該源代碼文件的單元測試代碼后,該源代碼文件屬性獲取模塊12采用遞歸的方式遞歸到該源代碼文件所在子目錄,再順序獲取下一個源代碼文件的操作單元和對應的參數(shù)屬性直至生成對應于該子目錄下所有源代碼文件的單元測試代碼;具體實施時,該源代碼屬性獲取模塊包括
結構分析子模塊,用于分析源代碼文件的結構;
屬性獲取子模塊,用于根據(jù)Java語言反射機制對源代碼文件從上至下進行解釋,得到該源代碼文件的多個操作單元,以及每個操作單元的輸入?yún)?shù)、參數(shù)類型和返回值等參數(shù)
8屬性;
代碼編寫規(guī)則獲取模塊13,用于在源代碼文件屬性獲取模塊每獲取到一個源代碼文件的操作單元以及對應的參數(shù)屬性時,獲取該預先定義的配置文件中的單元測試代碼編寫規(guī)則;在一具體實施例中,該單元測試代碼編寫規(guī)則為JUnit單元測試代碼編寫規(guī)則;
代碼自動生成模塊14,用于根據(jù)源代碼文件的操作單元、參數(shù)屬性和單元測試代碼編寫規(guī)則,生成對應的單元測試代碼。具體實施時,本發(fā)明實施例的該代碼自動生成模塊14 包括
文件生成子模塊,用于根據(jù)源代碼文件的目錄結構,生成對應的目錄及該目錄下的空白目標文件;在一具體實施例中,生成的該空白目標文件的文件名名稱也采用對應的被測試源代碼文件名稱;
代碼生成子模塊,用于根據(jù)單元測試代碼編寫規(guī)則和源代碼文件的操作單元以及對應的參數(shù)屬性,在該空白的目標文件中生成單元測試代碼。在另一具體實施例中,本發(fā)明實施例的單元測試代碼生成裝置還包括配置文件模塊,用于預先定義配置文件,該配置文件包含JUnit單元測試代碼編寫規(guī)則;在一具體實施例中,該JUnit單元測試代碼編寫規(guī)則包括
類名后置名詞為“Test”;
創(chuàng)建測試函數(shù)聲明;具體實施時,創(chuàng)建測試函數(shù)聲明包括測試函數(shù)無返回值、無輸入?yún)?shù),即測試函數(shù)必須聲明為“void”,即無返回值;操作單元名的前置名詞為“test” ;在另一具體實施例中,還可包括在測試函數(shù)的上一行增加“Otest” ;
預定義源代碼文件中的操作單元的輸入?yún)?shù)和預期結果,并調(diào)用源代碼文件中的操作單元。本實施例中“預定義”是指源代碼文件的操作單元的輸入?yún)?shù)類型的默認值,即Java 中基本數(shù)據(jù)類型默認值。Java的基本數(shù)據(jù)類型默認值為
short: O;int: O;long:0 ;float: 0.0;double: 0.0;
char: (int)char=0; String:null ; boolean: false ; 并且Java中對象引用默認值為null。本實施例中測試函數(shù)的內(nèi)部實現(xiàn)代碼實際上是調(diào)用源代碼文件中的操作單元,而調(diào)用源代碼文件中的操作單元時,需要傳入的參數(shù)是自定義默認值;
預期結果也為自定義默認值,即需要預先自定義該源代碼文件操作單元的返回值,即預期結果,從而通過比較所調(diào)用源代碼文件的操作單元后返回的結果,與該自定義預期結果是否一致,以驗證實際的源代碼文件中操作單元的執(zhí)行結果的正確性。本發(fā)明實施例的單元測試代碼生成裝置通過代碼編寫規(guī)則獲取模塊從配置文件中獲取單元測試代碼編寫規(guī)則,以及由源代碼文件屬性獲取模塊獲取的源代碼文件的操作單元和對應的參數(shù)屬性,再由代碼自動生成模塊結合單元測試代碼編寫規(guī)則和源代碼文件的操作單元和參數(shù)屬性來自動生成對應于該源代碼文件的單元測試代碼,從而當需要進行測試時,可直接將該單元測試代碼在JUnit軟件中執(zhí)行即可,不需要程序員手動來編寫單元測試代碼,使得程序員只需根據(jù)方法的實際要求,修改參數(shù)即可,進而降低了程序員的工作量;并且通過本發(fā)明實施例的方法及裝置生成的代碼,用JUnit軟件統(tǒng)計覆蓋正確性能夠達到20%左右,剩下的代碼自行做出小的參數(shù)修改就能正確執(zhí)行。以上所揭露的僅為本發(fā)明較佳實施例而已,當然不能以此來限定本發(fā)明之權利范圍,本領域普通技術人員可以理解實現(xiàn)上述實施例的全部或部分流程,并依本發(fā)明權利要求所作的等同變化,仍屬于發(fā)明所涵蓋的范圍。
權利要求
1.一種單元測試代碼生成方法,其特征在于,包括導入源代碼集,所述源代碼集包括至少一個源代碼文件;根據(jù)所述源代碼集的目錄規(guī)則,依次獲取各個源代碼文件所包含的操作單元,以及與該操作單元對應的參數(shù)屬性;當每獲取一個源代碼文件的操作單元以及對應的參數(shù)屬性后,獲取預先定義的配置文件中的單元測試代碼編寫規(guī)則;并根據(jù)所述單元測試代碼編寫規(guī)則和所述源代碼文件的操作單元和該操作單元對應的參數(shù)屬性,生成對應的單元測試代碼。
2.如權利要求I所述的單元測試代碼生成方法,其特征在于,所述源代碼文件為Java 文件,所述單元測試代碼編寫規(guī)則為JUnit單元測試代碼編寫規(guī)則。
3.如權利要求I所述的單元測試代碼生成方法,其特征在于,所述根據(jù)所述單元測試代碼編寫規(guī)則和所述源代碼文件的操作單元和該操作單元對應的參數(shù)屬性,生成對應的單元測試代碼的步驟,具體包括根據(jù)所述源代碼文件的目錄結構,生成對應目錄及該目錄下的空白目標文件;根據(jù)所述單元測試代碼編寫規(guī)則和所述源代碼文件的操作單元和對應的參數(shù)屬性,在所述空白的目標文件中生成單元測試代碼。
4.如權利要求2所述的單元測試代碼生成方法,其特征在于,所述依次獲取各個源代碼文件所包含的操作單元,以及與該操作單元對應的參數(shù)屬性具體包括依次分析各個所述源代碼文件的結構,并根據(jù)Java語言反射機制對所述源代碼文件從上至下進行解釋,得到所述源代碼文件的多個操作單元,以及與每一個操作單元對應的參數(shù)屬性。
5.如權利要求4所述的單元測試代碼生成方法,其特征在于,所述操作單元對應的參數(shù)屬性包括輸入?yún)?shù)、參數(shù)類型及返回值。
6.如權利要求2或4或5所述的單元測試代碼生成方法,其特征在于,所述JUnit單元測試代碼編寫規(guī)則包括類名后置名詞為“Test” ;操作單元名的前置名詞為“test” ;對應于該操作單元的測試函數(shù)無返回值。
7.—種單元測試代碼生成裝置,其特征在于,包括源代碼集導入模塊,用于導入源代碼集,所述源代碼集包括至少一個源代碼文件;源代碼文件屬性獲取模塊,用于根據(jù)所述源代碼集的目錄規(guī)則,依次獲取各個所述源代碼文件的操作單元,以及對應于所述操作單元的參數(shù)屬性;代碼編寫規(guī)則獲取模塊,用于在所述源代碼文件屬性獲取模塊每獲取到一個源代碼文件的操作單元和對應的參數(shù)屬性時,獲取預先定義的配置文件中的單元測試代碼編寫規(guī)則;代碼自動生成模塊,用于根據(jù)所述源代碼文件的操作單元、參數(shù)屬性和所述單元測試代碼編寫規(guī)則,生成對應的單元測試代碼。
8.如權利要求7所述的單元測試代碼生成裝置,其特征在于,所述源代碼文件為Java 文件,所述單元測試代碼編寫規(guī)則為JUnit單元測試代碼編寫規(guī)則。
9.如權利要求7所述的單元測試代碼生成裝置,其特征在于,所述代碼自動生成模塊包括文件生成子模塊,用于根據(jù)所述源代碼文件的目錄結構,生成對應目錄以及該目錄下的空白目標文件;代碼生成子模塊,用于根據(jù)所述單元測試代碼編寫規(guī)則和所述源代碼文件的操作單元和對應的參數(shù)屬性,在所述空白的目標文件中生成單元測試代碼。
10.如權利要求8所述的單元測試代碼生成裝置,其特征在于,所述源代碼文件屬性獲取模塊包括結構分析子模塊,用于分析所述源代碼文件的結構;屬性獲取子模塊,用于根據(jù)Java語言反射機制對所述源代碼文件從上至下進行解釋, 得到所述源代碼文件的多個操作單元,以及每一個操作單元的參數(shù)屬性。
全文摘要
本發(fā)明公開了一種單元測試代碼生成方法及裝置。本發(fā)明實施例的單元測試代碼生成方法通過獲取源代碼文件的操作單元和對應的參數(shù)屬性,并獲取配置文件中的單元測試代碼編寫規(guī)則,再結合這三者自動生成對應于該源代碼文件的單元測試代碼,使得當需要進行測試時,可直接將生成的該單元測試代碼在JUnit軟件中執(zhí)行即可,從而不需要程序員手動來編寫單元測試代碼,使得程序員只需根據(jù)方法的實際要求,修改參數(shù)即可,進而降低了程序員的工作量;并且通過本發(fā)明實施例的方法及裝置生成的代碼,用JUnit軟件統(tǒng)計覆蓋正確性能夠達到20%左右,剩下的代碼自行做出小的參數(shù)修改就能正確執(zhí)行。
文檔編號G06F11/36GK102591777SQ20121000544
公開日2012年7月18日 申請日期2012年1月10日 優(yōu)先權日2012年1月10日
發(fā)明者何振飛, 鄧勇 申請人:深圳市同洲視訊傳媒有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
杭州市| 隆化县| 巴里| 武冈市| 神池县| 保亭| 金堂县| 勃利县| 揭西县| 霍州市| 辽宁省| 琼中| 清苑县| 新建县| 罗甸县| 于都县| 襄城县| 赤水市| 搜索| 绍兴市| 安溪县| 公安县| 息烽县| 谷城县| 天津市| 海淀区| 康平县| 长岛县| 容城县| 香格里拉县| 花莲县| 福海县| 新野县| 东兰县| 会昌县| 四子王旗| 兖州市| 金沙县| 商洛市| 宜良县| 梅州市|