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