Использование инфраструктуры тестирования юнитов для проверки данных - PullRequest
0 голосов
/ 07 сентября 2018

В наших приложениях мы должны настроить процедуру проверки данных, которая будет применяться к набору данных, которые мы используем.

Точнее, для данного набора данных мы хотели бы выполнить набор проверок для него, чтобы проверить его согласованность. Например, учитывая динамические свойства объекта, такие как:

  • масса
  • центр тяжести
  • инерционная матрица

мы хотели бы проверить, что:

  • масса положительна
  • инерционная матрица симметрична
  • Матрица инерции определенно положительна
  • и т.д ...

Для этой цели интересна структура matlab unittest, поскольку она предлагает целый набор проверок и условий приемки. Однако, даже с параметризованным тестом, кажется невозможным иметь набор тестов, который может принимать данные для проверки в качестве ввода, например, Кажется невозможным написать параметризованный тест, в котором параметры устанавливаются при запуске тестового набора, а не внутри класса (как это представлено в документации).

Мне интересно, что я упускаю из-за API юнит-теста или это невозможно?

1 Ответ

0 голосов
/ 07 сентября 2018

Я сделал нечто похожее на то, что вы просите. Он не принимает аргумент командной строки в качестве входных данных, но он, по сути, запускает тесты для группы файлов в каталоге. Вот скелет некоторого кода для этого:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...