exponenta event banner

testrunner

Создание тестового питателя

Описание

пример

runner = testrunner создает тестовый питатель по умолчанию, который аналогичен питателю, настроенному по умолчанию в среде тестирования при вызове runtests функция.

testrunner функция возвращает matlab.unittest.TestRunner объект. Можно вызвать методы возвращаемого объекта для выполнения и работы с набором тестов, а также для настройки выполняемых тестов. Например, чтобы запустить набор тестов, используйте run(runner,suite).

пример

runner = testrunner('minimal') создает минимальный питатель без установленных подключаемых модулей. Возвращенный тестовый питатель является самым простым питателем и не выдает текста. Используйте этот синтаксис, когда вы хотите иметь полный контроль над тем, какие подключаемые модули добавить в питатель.

пример

runner = testrunner('textoutput') создает питатель, настроенный для вывода текста. Полученные результаты включают в себя ход тестирования, а также диагностику в случае сбоев тестирования.

Этот синтаксис создает питатели, которые, как правило, запускают тесты быстрее, так как структура тестирования не записывает диагностику результатов тестов, полученных не по умолчанию. Дополнительные сведения см. в разделе Программный доступ к диагностике тестов.

Примеры

свернуть все

Запустите набор тестов с питателем по умолчанию и получите доступ к результатам.

Создание функционального теста sampleTest.m в текущей папке. Файл содержит два пройденных теста и один тест, который намеренно завершается неуспешно.

function tests = sampleTest
tests = functiontests(localfunctions);
end

function testA(testCase)      % Test passes
verifyEqual(testCase,2+3,5)
end

function testB(testCase)      % Test fails
verifyGreaterThan(testCase,13,42)
end

function testC(testCase)      % Test passes
verifySubstring(testCase,'hello, world','llo')
end

Создание набора тестов из тестов в sampleTest.m. Затем создайте питатель по умолчанию и запустите тесты.

suite = testsuite('SampleTest');
runner = testrunner;
results = run(runner,suite);
Running sampleTest
.
================================================================================
Verification failed in sampleTest/testB.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyGreaterThan failed.
    --> The value must be greater than the minimum value.
    
    Actual Value:
        13
    Minimum Value (Exclusive):
        42
    ------------------
    Stack Information:
    ------------------
    In C:\TEMP\Examples\matlab-ex95386316\sampleTest.m (testB) at 10
================================================================================
..
Done sampleTest
__________

Failure Summary:

     Name              Failed  Incomplete  Reason(s)
    ===============================================================
     sampleTest/testB    X                 Failed by verification.

Просмотрите результаты второго теста.

results(2)
ans = 
  TestResult with properties:

          Name: 'sampleTest/testB'
        Passed: 0
        Failed: 1
    Incomplete: 0
      Duration: 0.2210
       Details: [1×1 struct]

Totals:
   0 Passed, 1 Failed (rerun), 0 Incomplete.
   0.221 seconds testing time.

При выполнении тестов с питателем по умолчанию в инфраструктуре тестирования используется DiagnosticsRecordingPlugin для записи результатов диагностики. Доступ к записанной диагностике для второго теста с помощью DiagnosticRecord в поле Details свойство на TestResult объект.

records = results(2).Details.DiagnosticRecord
records = 
  QualificationDiagnosticRecord with properties:

                          Event: 'VerificationFailed'
                     EventScope: TestMethod
                  EventLocation: 'sampleTest/testB'
          TestDiagnosticResults: [1×0 matlab.unittest.diagnostics.DiagnosticResult]
     FrameworkDiagnosticResults: [1×1 matlab.unittest.diagnostics.DiagnosticResult]
    AdditionalDiagnosticResults: [1×0 matlab.unittest.diagnostics.DiagnosticResult]
                          Stack: [1×1 struct]
                         Report: 'Verification failed in sampleTest/testB.↵    ---------------------↵    Framework Diagnostic:↵    ---------------------↵    verifyGreaterThan failed.↵    --> The value must be greater than the minimum value.↵    ↵    Actual Value:↵        13↵    Minimum Value (Exclusive):↵        42↵    ------------------↵    Stack Information:↵    ------------------↵    In C:\TEMP\Examples\matlab-ex95386316\sampleTest.m (testB) at 10'

Создание результатов теста в стиле JUnit путем создания минимального питателя и последующего добавления XMLPlugin экземпляр для питателя.

Создание функционального теста sampleTest.m в текущей папке. Файл содержит два пройденных теста и один тест, который намеренно завершается неуспешно.

function tests = sampleTest
tests = functiontests(localfunctions);
end

function testA(testCase)      % Test passes
verifyEqual(testCase,2+3,5)
end

function testB(testCase)      % Test fails
verifyGreaterThan(testCase,13,42)
end

function testC(testCase)      % Test passes
verifySubstring(testCase,'hello, world','llo')
end

Создание набора тестов из тестов в sampleTest.m.

suite = testsuite('sampleTest');

Создайте тестовый питатель без подключаемых модулей. Этот код создает бесшумный питатель, который не выдает выходных данных. Теперь вы можете установить любые плагины вам нравится.

runner = testrunner('minimal');

Создание XMLPlugin экземпляр, записывающий вывод XML в формате JUnit в файл myTestResults.xml.

import matlab.unittest.plugins.XMLPlugin
xmlFile = 'myTestResults.xml';
p = XMLPlugin.producingJUnitFormat(xmlFile);

Добавьте подключаемый модуль в тестовый питатель и запустите тесты.

addPlugin(runner,p)
results = run(runner,suite);

Просмотрите результаты второго теста.

results(2)
ans = 
  TestResult with properties:

          Name: 'sampleTest/testB'
        Passed: 0
        Failed: 1
    Incomplete: 0
      Duration: 0.0723
       Details: [1×1 struct]

Totals:
   0 Passed, 1 Failed (rerun), 0 Incomplete.
   0.0723 seconds testing time.

Проверьте диагностику, зарегистрированную по результатам теста. При использовании питателя по умолчанию DiagnosticRecord поле в этом месте. Но так как вы используете бегун не по умолчанию, фреймворк не создает такого поля.

records = results(2).Details
records = struct with no fields.


Теперь просмотрите содержимое созданного артефакта.

disp(fileread(xmlFile))
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<testsuites>

  <testsuite errors="0" failures="1" name="sampleTest" skipped="0" tests="3" time="0.083731">
    <testcase classname="sampleTest" name="testA" time="0.0085045"/>
    <testcase classname="sampleTest" name="testB" time="0.0723">
      <failure type="VerificationFailure">Verification failed in sampleTest/testB.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyGreaterThan failed.
    --&gt; The value must be greater than the minimum value.
    
    Actual Value:
        13
    Minimum Value (Exclusive):
        42
    ------------------
    Stack Information:
    ------------------
    In C:\TEMP\Examples\matlab-ex97531283\sampleTest.m (testB) at 10</failure>
    </testcase>
    <testcase classname="sampleTest" name="testC" time="0.0029273"/>
  </testsuite>

</testsuites>

Запустите набор тестов с питателем, настроенным для вывода текста, а затем получите доступ к результатам.

Создание функционального теста sampleTest.m в текущей папке. Файл содержит два пройденных теста и один тест, который намеренно завершается неуспешно.

function tests = sampleTest
tests = functiontests(localfunctions);
end

function testA(testCase)      % Test passes
verifyEqual(testCase,2+3,5)
end

function testB(testCase)      % Test fails
verifyGreaterThan(testCase,13,42)
end

function testC(testCase)      % Test passes
verifySubstring(testCase,'hello, world','llo')
end

Создание набора тестов из тестов в sampleTest.m.

suite = testsuite('sampleTest');

Создайте питатель для вывода текста и используйте его для выполнения тестов.

runner = testrunner('textoutput');
results = run(runner,suite);
Running sampleTest
.
================================================================================
Verification failed in sampleTest/testB.
    ---------------------
    Framework Diagnostic:
    ---------------------
    verifyGreaterThan failed.
    --> The value must be greater than the minimum value.
    
    Actual Value:
        13
    Minimum Value (Exclusive):
        42
    ------------------
    Stack Information:
    ------------------
    In C:\TEMP\Examples\matlab-ex48684143\sampleTest.m (testB) at 10
================================================================================
..
Done sampleTest
__________

Failure Summary:

     Name              Failed  Incomplete  Reason(s)
    ===============================================================
     sampleTest/testB    X                 Failed by verification.

Просмотрите результаты второго теста.

results(2)
ans = 
  TestResult with properties:

          Name: 'sampleTest/testB'
        Passed: 0
        Failed: 1
    Incomplete: 0
      Duration: 1.9894
       Details: [1×1 struct]

Totals:
   0 Passed, 1 Failed (rerun), 0 Incomplete.
   1.9894 seconds testing time.

Проверьте диагностику, зарегистрированную по результатам теста. При использовании питателя по умолчанию DiagnosticRecord поле в этом месте. Но так как вы используете бегун не по умолчанию, фреймворк не создает такого поля.

records = results(2).Details
records = struct with no fields.


Совет

  • Питатель, созданный с помощью testrunner('minimal') совпадает с питателем, созданным с помощью matlab.unittest.TestRunner.withNoPlugins способ.

  • Питатель, созданный с помощью testrunner('textoutput') совпадает с питателем, созданным с помощью matlab.unittest.TestRunner.withTextOutput метод без входных аргументов.

Представлен в R2021a