作为我的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