使用单元测试框架进行数据验证

时间:2018-09-07 13:40:15

标签: matlab unit-testing

在我们的应用程序中,我们必须设置一个数据验证例程以应用于正在使用的数据集。

更准确地说,对于给定的一组数据,我们希望对其进行一组检查,以验证其一致性。例如,给定对象的动态特性,例如:

  • 质量
  • 重心
  • 惯性矩阵

我们想验证一下:

  • 质量为正
  • 惯性矩阵是对称的
  • 惯性矩阵是确定的正数
  • 等...

为此,matlab单元测试框架看起来很有趣,因为它提供了一整套检查和接受条件。但是,即使使用参数化测试,似乎也无法拥有一个可以接受要检查的数据作为输入的测试套件,例如在运行测试套件时而不是在类中(如文档中所示),似乎无法编写参数化测试,在该参数化测试中设置参数。

我想知道我是否遗漏了一些有关unittest API的信息,还是绝对不可能做到?

1 个答案:

答案 0 :(得分:0)

我已经完成了与您要求的类似的操作。它不使用命令行参数作为输入,但实际上它确实在目录中的一组文件上运行测试。这是一些代码的骨架:

classdef checkMyData < matlab.unittest.TestCase

    properties(TestParameter)
        % just create a cell array of numbers, one for each file, for the test to iterate through
        filenum = num2cell(1:length(dir('\directory\where\data\is\*.mat')));
    end

    methods(Test)

        function genericFile(testCase,filenum)

            % get details on the file we're currently testing
            testDataPath = '\directory\where\data\is';
            testFiles = dir(fullfile(testDataPath,'*.mat'));
            filename = fullfile(testDataPath,testFiles(filenum).name);
            [~,nameonly,~] = fileparts(filename);

            % load data
            load(filename);

            % do some test
            testCase.verifyGreaterThanOrEqual(mass,[nameonly ': Mass is negative'])

        end

    end

end