作爲我的previous question的後續工作,我遇到了一個新的障礙:如何爲工具箱中的函數生成存根(stub)?Matlab工具箱中的存根測試
我發現安迪坎貝爾的解決方案爲非toolbox case。這在我的情況下不起作用,因爲Matlab抱怨:Pathfixtures中的MATLAB路徑中不允許包目錄!
我也沒有看到這個概念將如何覆蓋工具箱中的導入語句,例如,在file2中。
這是我的設置:
+folder1/file1.m
+folder1/runtestsuite.m
+folder1/unittest_data/file1_testdata.mat
+folder1/+folder2/file2.m
+folder1/+folder2/unittest_data/overloads/file1.m
...
比方說,我想在文件2存根文件1。而file2有第一條語句:import folder1.file1
。
隨着
methods(Access=private)
function inject_file1_stub(testCase, answer)
import matlab.unittest.fixtures.PathFixture;
testCase.applyFixture(PathFixture(fullfile(testCase.path,'overloads')));
file1('', answer);
end
end
所以目前我認爲這個概念並不適用於我的情況,所以這是怎麼用MATLAB做正確?
我知道,如果在路徑中添加具有相同工具箱名稱和功能的其他路徑,就可以在工具箱中隱藏某個函數的實現。爲此,我將不得不重新創建當前文件夾設置的一個子集:
所以我對夾具當前的想法是
- 創建臨時文件夾
tempdir
- 使用
mfilename
檢查工具箱中的什麼子集目錄我不得不重新 - 生成文件夾結構,從過載文件夾
- 拷貝到新的工具箱系統
- 添加THI s至路徑
運行測試
在拆卸
- 刪除臨時文件夾
- 移除路徑
我有條目沒有實現這一點,似乎有點冗長知道在MATLAB中有一個Pathfixture已經。 指向其他工具箱指出他們如何解決這些問題也是受歡迎的。
我看到,隱藏我的測試工具箱是不可能的。我的初衷是將file1.m的測試作爲file1_test.m或其子文件夾放在它旁邊。由於改變目前的佈局並不是什麼大不了的事情,我會繼續這樣做。 – Bort