在MATLAB单元测试中用setupOnce共享变量的可行性及实现方法
MATLAB单元测试中通过setupOnce共享旧代码生成的矩阵
完全可行,你可以通过给测试类添加属性,在setupOnce中把旧代码生成的矩阵存入该属性,让所有测试用例共享这个结果,避免重复执行耗时的旧代码操作。具体实现步骤如下:
1. 编写基于类的测试结构
MATLAB的单元测试需要以类的形式实现,继承自matlab.unittest.TestCase,并通过类属性来共享数据:
classdef MatrixComparisonTest < matlab.unittest.TestCase % 声明属性存储旧代码生成的矩阵 properties ExpectedA end % ClassSetupMethod 标记的方法会在整个测试类执行前只运行一次 methods (ClassSetupMethod) function setupOnce(testCase) % 执行旧代码生成矩阵,并赋值给测试实例的属性 testCase.ExpectedA = buildOldMatrix; end end % 测试用例方法,每个方法对应一个测试场景 methods (Test) function testNewMatrix(testCase) actualA = buildNewMatrix; % 访问共享的ExpectedA,对比新旧代码结果 testCase.verifyEqual(actualA, testCase.ExpectedA); end function testEdgeCaseMatrix(testCase) % 另一个测试用例,同样可以直接使用已生成的ExpectedA actualA = buildNewMatrixEdgeCase; testCase.verifyEqual(actualA, testCase.ExpectedA); end end end
关键说明
- 类属性
ExpectedA:作为共享数据的容器,所有测试用例都能通过testCase.ExpectedA访问。 ClassSetupMethod修饰符:标记的setupOnce方法会在整个测试类启动时仅执行一次,完美适配你“只跑一次旧代码”的需求。- 测试用例独立性:确保
buildOldMatrix没有全局变量修改等副作用,避免不同测试用例间的干扰。
内容的提问来源于stack exchange,提问作者Rich006
相关产品推荐
相关产品推荐

