Этот пример показывает, как создать плагин, который использует пользовательский формат, чтобы записать завершенные результаты испытаний в поток вывода.
В файле в вашей рабочей папке создайте класс, ExampleCustomPlugin
, который наследовался matlab.unittest.plugins.TestRunnerPlugin
class. В сменном классе:
Задайте свойство 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.
ToFile
| ToStandardOutput
| matlab.unittest.plugins. OutputStream
| matlab.unittest.plugins. TestRunnerPlugin