【发布时间】:2016-07-15 16:08:39
【问题描述】:
我在 matlab 中继承了一个代码库,我喜欢使用 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 添加一个单元测试。但是,如果我将文件放在 +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
如果我取消注释导入语句,单元测试可以正常工作。所以目前我必须将所有导入语句添加到每个单独的测试中,我想避免这种情况。有没有更优雅的方式来做这样的事情?
我尝试在文件开头导入它,尽管 matlab 抱怨“CLASSDEF 处的解析错误:用法可能是无效的 MATLAB 语法”。这也有效。那么做这种事情的正确和最务实的方法是什么?
【问题讨论】:
标签: matlab unit-testing