Unit test can't see the function it needs to test
8 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Louis
el 12 de Nov. de 2020
Comentada: Louis
el 13 de Nov. de 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 comentarios
Respuesta aceptada
Steven Lord
el 13 de Nov. de 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.
Más respuestas (0)
Ver también
Categorías
Más información sobre Downloads en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!