103 lines
3.4 KiB
Matlab
103 lines
3.4 KiB
Matlab
%TestCase Class defining interface for test cases
|
|
% The TestCase class defines an individual test case.
|
|
%
|
|
% Normally a test writer will create their own test class that is a subclass
|
|
% of TestCase. Each instance of the TestCase subclass that gets created will
|
|
% be associated with a single test method.
|
|
%
|
|
% If a test fixture is needed, override the setUp() and tearDown() methods.
|
|
%
|
|
% TestSuite(subclass_name), where subclass_name is the name of a TestCase
|
|
% subclass, creates a test suite containing one TestCase instance per test
|
|
% method contained in the subclass.
|
|
%
|
|
% A simpler test-writing alternative to use subfunction-based M-file tests.
|
|
% See the MATLAB xUnit documentation.
|
|
%
|
|
% TestCase methods:
|
|
% TestCase - Constructor
|
|
% run - Execute the test case
|
|
%
|
|
% TestCase properties:
|
|
% Location - Location of M-file containing the test case
|
|
% Name - Name of test case
|
|
%
|
|
% See also TestComponent, TestSuite
|
|
|
|
% Steven L. Eddins
|
|
% Copyright 2008-2010 The MathWorks, Inc.
|
|
|
|
classdef TestCase < TestComponent
|
|
|
|
properties
|
|
MethodName
|
|
end
|
|
|
|
methods
|
|
function self = TestCase(testMethod)
|
|
%TestCase Constructor
|
|
% TestCase(methodName) constructs a TestCase object using the
|
|
% specified testMethod (a string).
|
|
|
|
self.MethodName = testMethod;
|
|
self.Name = testMethod;
|
|
self.Location = which(class(self));
|
|
end
|
|
|
|
function did_pass = run(self, monitor)
|
|
%run Execute the test case
|
|
% test_case.run(monitor) calls the TestCase object's setUp()
|
|
% method, then the test method, then the tearDown() method.
|
|
% observer is a TestRunObserver object. The testStarted(),
|
|
% testFailure(), testError(), and testFinished() methods of
|
|
% observer are called at the appropriate times. monitor is a
|
|
% TestRunMonitor object. Typically it is either a TestRunLogger
|
|
% subclass or a CommandWindowTestRunDisplay subclass.
|
|
%
|
|
% test_case.run() automatically uses a
|
|
% CommandWindowTestRunDisplay object in order to print test
|
|
% suite execution information to the Command Window.
|
|
|
|
if nargin < 2
|
|
monitor = CommandWindowTestRunDisplay();
|
|
end
|
|
|
|
did_pass = true;
|
|
monitor.testComponentStarted(self);
|
|
|
|
try
|
|
self.setUp();
|
|
f = str2func(self.MethodName);
|
|
|
|
try
|
|
% Call the test method.
|
|
f(self);
|
|
catch failureException
|
|
monitor.testCaseFailure(self, failureException);
|
|
did_pass = false;
|
|
end
|
|
|
|
self.tearDown();
|
|
|
|
catch errorException
|
|
monitor.testCaseError(self, errorException);
|
|
did_pass = false;
|
|
end
|
|
|
|
monitor.testComponentFinished(self, did_pass);
|
|
end
|
|
|
|
function num = numTestCases(self)
|
|
num = 1;
|
|
end
|
|
|
|
function print(self, numLeadingBlanks)
|
|
if nargin < 2
|
|
numLeadingBlanks = 0;
|
|
end
|
|
fprintf('%s%s\n', blanks(numLeadingBlanks), self.Name);
|
|
end
|
|
|
|
end
|
|
|
|
end
|