我在matlab中繼承了一個代碼庫,我喜歡在unittest下使用matlab.unittest框架。在自己的matlab工具箱中使用unittest
爲了使代碼庫更加強大,可以防止用戶的任意添加路徑,我已經將大部分代碼放入+文件夾中,比如工具箱。所以總體佈局是:
+folder1/file1.m
+folder1/runtestsuite.m
+folder1/unittest_data/file1_testdata.mat
+folder1/+folder2/file2.m
+folder1/+folder2/unittest_data/file2_testdata.mat
...
並用正確的導入語句更新了所有內部引用。
現在,我想爲file1.m添加一個unittest。但是,如果我把一個文件放在+ folder1/file1_test.m file1.m似乎不可見。
這裏是file1_test.m
classdef file1_test < matlab.unittest.TestCase
properties
path
end
methods(TestMethodSetup)
function setunittestdatapath(testCase)
p = mfilename('fullpath');
[directory,~,~]=fileparts(p);
testCase.path = fullfile(directory,'unittest_data');
end
end
methods (Test)
function file1_input(testCase)
%import folder1.file1
testdata = load(fullfile(testCase.path),'file1_testdata.mat');
result = file1(testdata.input);
testCase.verifyEqual(result, testdata.output);
end
end
end
我的示例代碼。如果我去掉import語句的單元測試工作正常。所以目前我必須將所有導入語句添加到每個單獨的測試中,這是我想避免的。有沒有更優雅的方式來做這樣的事情?
我試着在文件的開頭導入它,雖然matlab抱怨:「CLASSDEF處的解析錯誤:使用可能是無效的MATLAB語法。」這也適用。那麼做這種事情的正確和最務實的方式是什麼?
我接受這個答案,雖然另一個也是很有趣的方法。在乾淨的代碼方面,這個解決方案很可能不是我所希望的。 – Bort