В этом примере показано, как создать плагин, использующий пользовательский формат для записи окончательных результатов теста в выходной поток.
В файле в рабочей папке создайте класс, ExampleCustomPlugin, которая наследует от matlab.unittest.plugins.TestRunnerPlugin класс. В классе плагинов:
Определение Stream свойство на плагине, в котором хранится OutputStream экземпляр. По умолчанию плагин записывает на стандартный выход.
Переопределить значение по умолчанию runTestSuite способ TestRunnerPlugin для вывода текста, указывающего, что тестовый питатель выполняет новый тестовый сеанс. Эта информация особенно полезна при записи в один файл журнала, поскольку позволяет различать тестовые запуски.
Переопределить значение по умолчанию reportFinalizedResult способ TestRunnerPlugin для записи окончательных результатов теста в выходной поток. Вы можете изменить print метод вывода результатов теста в формате, который работает для журналов тестирования или системы непрерывной интеграции.
classdef ExampleCustomPlugin < matlab.unittest.plugins.TestRunnerPlugin properties (Access=private) Stream end methods function p = ExampleCustomPlugin(stream) if ~nargin stream = matlab.unittest.plugins.ToStandardOutput; end validateattributes(stream,... {'matlab.unittest.plugins.OutputStream'},{}) p.Stream = stream; end end methods (Access=protected) function runTestSuite(plugin,pluginData) plugin.Stream.print('\n--- NEW TEST SESSION at %s ---\n',... char(datetime)) runTestSuite@... matlab.unittest.plugins.TestRunnerPlugin(plugin,pluginData); end function reportFinalizedResult(plugin,pluginData) thisResult = pluginData.TestResult; if thisResult.Passed status = 'PASSED'; elseif thisResult.Failed status = 'FAILED'; elseif thisResult.Incomplete status = 'SKIPPED'; end plugin.Stream.print(... '### YPS Company - Test %s ### - %s in %f seconds.\n',... status,thisResult.Name,thisResult.Duration) reportFinalizedResult@... matlab.unittest.plugins.TestRunnerPlugin(plugin,pluginData) end end end
В рабочей папке создайте файл ExampleTest.m содержит следующий класс теста. В этом классе тестирования два теста проходят успешно, а другие приводят к сбою проверки или предположения.
classdef ExampleTest < matlab.unittest.TestCase methods(Test) function testOne(testCase) testCase.assertGreaterThan(5,1) end function testTwo(testCase) wrongAnswer = 'wrong'; testCase.verifyEmpty(wrongAnswer,'Not Empty') testCase.verifyClass(wrongAnswer,'double','Not double') end function testThree(testCase) testCase.assumeEqual(7*2,13,'Values not equal') end function testFour(testCase) testCase.verifyEqual(3+2,5); end end end
В командной строке создайте набор тестов из ExampleTest и создайте тестовый питатель.
import matlab.unittest.TestSuite import matlab.unittest.TestRunner suite = TestSuite.fromClass(?ExampleTest); runner = TestRunner.withNoPlugins;
Создание экземпляра ExampleCustomPlugin и добавьте его в тестовый питатель. Запустите тесты.
import matlab.unittest.plugins.ToFile fname = 'YPS_test_results.txt'; p = ExampleCustomPlugin(ToFile(fname)); runner.addPlugin(p) result = runner.run(suite);
Просмотрите содержимое выходного файла.
type(fname)
--- NEW TEST SESSION at 26-Jan-2015 10:41:24 --- ### YPS Company - Test PASSED ### - ExampleTest/testOne in 0.123284 seconds. ### YPS Company - Test FAILED ### - ExampleTest/testTwo in 0.090363 seconds. ### YPS Company - Test SKIPPED ### - ExampleTest/testThree in 0.518044 seconds. ### YPS Company - Test PASSED ### - ExampleTest/testFour in 0.020599 seconds.
Повторно запустите Incomplete тесты с использованием одного и того же испытательного питателя. Просмотрите содержимое выходного файла.
suiteFiltered = suite([result.Incomplete]); result2 = runner.run(suiteFiltered); type(fname)
--- NEW TEST SESSION at 26-Jan-2015 10:41:24 --- ### YPS Company - Test PASSED ### - ExampleTest/testOne in 0.123284 seconds. ### YPS Company - Test FAILED ### - ExampleTest/testTwo in 0.090363 seconds. ### YPS Company - Test SKIPPED ### - ExampleTest/testThree in 0.518044 seconds. ### YPS Company - Test PASSED ### - ExampleTest/testFour in 0.020599 seconds. --- NEW TEST SESSION at 26-Jan-2015 10:41:58 --- ### YPS Company - Test SKIPPED ### - ExampleTest/testThree in 0.007892 seconds.
matlab.unittest.plugins.OutputStream | matlab.unittest.plugins.TestRunnerPlugin | ToFile | ToStandardOutput