Run Tests for Various Workflows
Set Up Example Tests
To explore different ways to run tests, create a class-based test and a function-based test in your current working folder. For the class-based test file use the DocPolynomTest
example test presented in the matlab.unittest.qualifications.Verifiable
example. For the function-based test file use the axesPropertiesTest
example test presented in Write Test Using Setup and Teardown Functions.
Run All Tests in Class or Function
Use the run
method of the TestCase
class to directly run tests contained in a single test file. When running tests directly, you do not need to explicitly create a Test
array.
% Directly run a single file of class-based tests results1 = run(DocPolynomTest); % Directly run a single file of function-based tests results2 = run(axesPropertiesTest);
You can also assign the test file output to a variable and run the tests using the functional form or dot notation.
% Create Test or TestCase objects t1 = DocPolynomTest; % TestCase object from class-based test t2 = axesPropertiesTest; % Test object from function-based test % Run tests using functional form results1 = run(t1); results2 = run(t2); % Run tests using dot notation results1 = t1.run; results2 = t2.run;
Alternatively, you can run tests contained in a single file by using runtests
or from the Editor.
Run Single Test in Class or Function
Run a single test from within a class-based test file by specifying the test method as an input argument to the run
method. For example, only run the test, testMultiplication
, from the DocPolynomTest
file.
results1 = run(DocPolynomTest,'testMultiplication');
Function-based test files return an array of Test
objects instead of a single TestCase
object. You can run a particular test by indexing into the array. However, you must examine the Name
field in the test array to ensure you run the correct test. For example, only run the test, surfaceColorTest
, from the axesPropertiesTest
file.
t2 = axesPropertiesTest; % Test object from function-based test
t2(:).Name
ans = axesPropertiesTest/testDefaultXLim ans = axesPropertiesTest/surfaceColorTest
The surfaceColorTest
test corresponds to the second element in the array.
Only run the surfaceColorTest
test.
results2 = t2(2).run; % or results2 = run(t2(2));
Alternatively, you can run a single test from the Editor.
Run Test Suites by Name
You can run a group, or suite, of tests together. To run the test suite using
runtests
, the suite is defined as a cell array of character
vectors representing a test file, a test class, a namespace that contains tests or a
folder that contains tests.
suite = {'axesPropertiesTest','DocPolynomTest'}; runtests(suite);
Run all tests in the current folder using the pwd
as input to the runtests
function.
runtests(pwd);
Alternatively, you can explicitly create Test
arrays and use the run
method to run them.
Run Test Suites from Test Array
You can explicitly create Test
arrays and use the run
method in the TestSuite
class to run them. Using this approach, you explicitly define TestSuite
objects and, therefore, can examine the contents. The runtests
function does not return the TestSuite
object.
import matlab.unittest.TestSuite s1 = TestSuite.fromClass(?DocPolynomTest); s2 = TestSuite.fromFile('axesPropertiesTest.m'); % generate test suite and then run fullSuite = [s1 s2]; result = run(fullSuite);
Since the suite is explicitly defined, it is easy for you to perform further analysis on the suite, such as rerunning failed tests.
failedTests = fullSuite([result.Failed]); result2 = run(failedTests);
Run Tests with Customized Test Runner
You can specialize the test running by defining a custom test runner and adding plugins. The run
method of the TestRunner
class operates on a TestSuite
object.
import matlab.unittest.TestRunner import matlab.unittest.TestSuite import matlab.unittest.plugins.TestRunProgressPlugin % Generate TestSuite. s1 = TestSuite.fromClass(?DocPolynomTest); s2 = TestSuite.fromFile('axesPropertiesTest.m'); suite = [s1 s2]; % Create silent test runner. runner = TestRunner.withNoPlugins; % Add plugin to display test progress. runner.addPlugin(TestRunProgressPlugin.withVerbosity(2)) % Run tests using customized runner. result = run(runner,[suite]);
See Also
runtests
| run (TestCase)
| run (TestSuite)
| run (TestRunner)