ABAP和Java的單元測試Unit Test

i042416發表於2018-06-16

ABAP

ABAP class單元測試的執行入口,CLASS_SETUP, 是硬編碼在單元測試框架實現CL_AUNIT_TEST_CLASS裡的。


ABAP和Java的單元測試Unit Test
ABAP和Java的單元測試Unit Test

待執行的單元測試方法通過CL_AUNIT_TEST_CLASS~get_Test_Methods返回到一個內表裡,然後LOOP該內表,依次執行。


ABAP和Java的單元測試Unit Test
ABAP和Java的單元測試Unit Test

Java

最常用的Maven plugin是maven-surefire-plugin,可以方便地單獨觸發單元測試,或者把單元測試的執行整合為Maven build的一個子步驟。

ABAP和Java的單元測試Unit Test

下圖表明在執行mvn clean install時,執行了srv/test/java/com/sap/testcase下面的兩個test case:


ABAP和Java的單元測試Unit Test

那麼maven-surefire-plugin是如何知道哪些.java檔案裡面的測試方法需要執行呢?
到這個目錄下面開啟maven-surefire-plugin的實現檔案SurefirePlugin.class:
.m2\repository\org\apache\maven\plugins\maven-surefire-plugin\2.20\maven-surefire-plugin-2.20\org\apache\maven\plugin\surefire

反編譯出來,在getDefaultIncludes裡面發現了答案:所有符合字尾Test*.java, Tests.java, TestCase.java結尾的Java檔案都作為執行單元測試的候選,


ABAP和Java的單元測試Unit Test

Java裡單元測試的靈活之處在於可以給同一class裡的不同方法指定不同的Category:


ABAP和Java的單元測試Unit Test

然後用命令列mvn install加上引數-P SlowTests只執行category為SlowTests的那些方法:
ABAP和Java的單元測試Unit Test


ABAP和Java的單元測試Unit Test

關於@Category註解的更多高階用法,參考我的SAP Community 部落格: Run only given sets of your unit test via @Category


要獲取更多Jerry的原創技術文章,請關注公眾號"汪子熙"或者掃描下面二維碼:

ABAP和Java的單元測試Unit Test
ABAP和Java的單元測試Unit Test

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2156263/,如需轉載,請註明出處,否則將追究法律責任。

相關文章