Unit test can't see the function it needs to test
8 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Louis
am 12 Nov. 2020
Kommentiert: Louis
am 13 Nov. 2020
This is my first time creating unittest, and I am having trouble directing unitTestClass to see the function it tests, which lives in a different directory.
I have the following directory structure:
+utilityFUnctions/
utilityFunction1.m
utilityFunction2.m
+computeFunctions/
computeFunction1.m
computeFunction2.m
unit_tests
unitTestClass.m
test_data/
unitTestInputData.mat
unitTestExpectedOut.mat
mainFunction.m
runAllUnitTests.m
Here is the content of the runAllUnitTest.m:
This basically will run all tests in unit_tests folder
import matlab.unittest.TestSuite
suiteFolder = TestSuite.fromFolder('unit_tests');
result = run(suiteFolder);
And this is the content of unit_tests/unitTestClass.m:
classdef computeFunction1Test < matlab.unittest.TestCase
methods (Test)
function testCase1(testCase)
[input1, input2] = load('test_data/unitTestInputData.mat')
act = compute.computeFunction1(input1, input2);
exp = load('test_data/unitTestExpectedOut.mat')
testCase.verifyEqual(act, exp)
end
end
end
When I run runAllUnitTest.m I get the following error:
Undefined function 'compute.computeFunction1'
I suspect that at the time of execution, working directory is /unit_tests and therefore not recognizing compute directory and functions in the directory.
Is there a way to keep the current directory structure and make the unit test work?
3 Kommentare
Akzeptierte Antwort
Steven Lord
am 13 Nov. 2020
+computeFunctions and +utilityFunctions are automatically in the Matlab's search path
Not true. In fact, package directories cannot be added to the search path. If the parent directory of the package directory is not on the search path and it is not the current directory, those package directories will not be visible to MATLAB.
If you want those package directories to be accessible to MATLAB always, add their parent directory to the path. If you only want them to be available while the test is running, consider using a matlab.unittest.fixtures.PathFixture to temporarily add that package directory to the path in one of the test setup methods. If you do when the test is torn down the path will be restored to its previous state.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Downloads finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!