我正在编写一个单元测试,以确保一些重构的MATLAB代码产生与传统代码相同的结果。有几个测试,但运行传统代码涉及耗时的活动,即加载多个文件并处理数据以生成矩阵A。我想使用setupOnce来运行传统代码,然后将A传递给各个单元测试。这可行吗?如果可以,应该如何实现?我的代码可能类似于这样:
function setupOnce(testCase)
expectedA = buildOldMatrix; % calls legacy code
end
function testNewMatrix(testCase)
actualA = buildNewMatrix; % calls new code
verifyEqual(testCase, expectedA, actualA)
end
setupOnce()
返回expectedA
作为输出,然后在testNewMatrix()
中将其作为输入参数使用并不是你想要的。如果你的矩阵不是很大,你可以让setupOnce()
将旧矩阵保存为.mat文件。然后testNewMatrix()
只需要加载该文件并进行比较,而不是运行耗时的遗留代码。 - undefinedsave
和load
,就像@Till所说的那样。 - undefinedsetupOnce()
返回expectedA
作为输出,然后在testNewMatrix()
中将其作为输入参数使用,听起来是一个不错的解决方案,但我还没有找到在基于函数的测试中如何实现这个语法。 - undefinedfunction testNewMatrix(testCase,legacyResults)
会出现警告:"testNewMatrix"函数必须只接受一个参数。
- undefined