如何使用MATLAB寫測試(6): 用Tag分類你的測試

在平日工程中,有個常見的問題就是如何分類自己辛辛苦苦寫好的測試。比如我們的myc在去年一年中寫的test文件夾整理如下:

test-n |-frontendn |---testLayout.mn |---testUserInput.mn |-backendn |---testAlgorithm.mn |-databasen |---testModel.mn |---testConnection.mn

正常情況下,myc的每一次代碼改動只需要跑其中的某一種測試

>>runtests(test/frontend)n

直到萬惡的Intejer公司推出了窗10系統,myc的老闆由於A輪投資拿太多,要求全面升級公司的窗系統。

myc知道他的程序只有部分代碼依賴穩定的窗px系統,如果要保證自己的程序在窗10下能正常運行,只需要跑某些特定的測試就好了。

我們來看看他的測試test/frontend/testLayout.m

classdef testLayout < matlab.unittest.TestCasen methods(Test)n %以上省略42個測試點n function ChuangDependency(test)n test.verifyTrue(ispc);n end n %以下省略100個測試點n endnendn

test/database test/backend中,也都有類似的測試點。myc花了10分鐘找到了這些測試點,並一一運行

>>runtests(test/frontend/testLayout.m,ProcedureName,ChuangDependency)n>>runtests(test/backend/testAlgorithm.m,ProcedureName,AnotherChuangDependency)n

作為一名合格的碼農,myc此時開始思考自己的人生

老闆要是拿了B輪投資,要升級窗11怎麼辦?

老闆上市後,改用了企鵝系統怎麼辦?

我難道每次都花10分鐘去找這些測試嗎?我對得起每小時500刀的工資嗎

還好,不知道從哪一版本的MATLAB開始,matlab.unittest.TestCase的子類們就可以用TestTags這一方式分類測試啦。

首先將你的測試分類

classdef testLayout < matlab.unittest.TestCasen % 這部分測試和操作系統無關n methods(Test,TestTags="layoutOnly")n %以上省略42個測試點n endn % 這部分測試會受窗操作系統影響n methods(Test,TestTags=["chuang","platform"])n function ChuangDependency(test)n test.verifyTrue(ispc);n end n endn % 這部分測試會受企鵝操作系統影響n methods(Test,TestTags=["qq","platform"])n function QQDependency(test)n test.verifyTrue(isunix);n end n endn % 這部分測試用作性能測試n methods(Test,TestTags="performance")n %以下省略100個測試點n endnendn

可以看到,新的測試在同一文件中被分成了不同的部分,每一部分都用TestTags來標記其作用 (這裡myc用了2017a中引入的雙引號定義string類型,在2017a版本之前可以用{a,b}來代替)

這樣一來,myc再也不用每次都花時間去找個別的測試了,他只需要做:

>>runtests(test,Tag,chuang,IncludeSubfolders,true)n

就可以遍歷所有被窗系統影響的測試了。

同理

>>runtests(test,Tag,platform,IncludeSubfolders,true)n

會選擇所有被操作系統影響到的測試。

myc又一次省下了10分鐘的人生,可是,他的公司真的能撐過A輪嗎。。。

推薦閱讀:

Android手工測試獲取代碼覆蓋率解決方案
GUI自動化測試進階:頁面對象模式
某測試模擬器性能優化-用vprof對Python程序性能調優
HiCircle的第一款產品TestBus beta版出來啦
使用 iMacros 來自動化日常的工作

TAG:MATLAB | 自动化测试 |