Using Load in a test methods makes the test pass
    4 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
The following test Passed! Why is that?
classdef minExample < matlab.unittest.TestCase
    properties
    end
    methods(Test)
        function test1(testCase)
            % comment
            save matlab
            load matlab
            verifyEqual(testCase,1,2);
        end
    end
end
Respuestas (2)
  Andy Campbell
    
 el 21 de Oct. de 2019
        Hi Erik,
The problem here is indeed the fact that the testCase is getting overwritten. Hence why if you assign the output of the load command to a structure the issue is not encountered. These steps are similar to something like the following:
classdef SomethingNotATestCase
    methods
        function verifyEqual(obj,varargin)
            % do something else
        end
    end
end
Then inside the test, doing something like this:
classdef minExample < matlab.unittest.TestCase
    methods(Test)
        function test1(testCase)
            testCase = SomethingNotATestCase
            verifyEqual(testCase,1,2);
        end
    end
end
In both of these cases you have overwritten the testCase with something that is not the right thing to produce a test failure. This is perfectly allowable by the language. This is part of the reason why it is suggested to use the functional form of the load command, including with the output argument, because when you dont use the output argument you "poof" variables into the workspace, and this can overwrite existing variables. If you assign it to an output argument then you explicitly name your variable, and are much less likely to overwrite another variable unknowingly.
Hope that helps!
Andy
0 comentarios
  per isakson
      
      
 el 18 de Oct. de 2019
        Looks like a bug to me, however in programs one ought to use the functional form
S = load('matlab.mat');
In that case the test fails as expected. 
3 comentarios
  per isakson
      
      
 el 18 de Oct. de 2019
				
      Editada: per isakson
      
      
 el 18 de Oct. de 2019
  
			My memory fails me. However, when the current Matlab oop-stuff was introduced 10+ years ago there was a great deal of discussion about saving and loading objects. 
Have a look at Save and Load Process for Objects
  per isakson
      
      
 el 18 de Oct. de 2019
				Maybe this is of interest to you General-use object copy
Did you contact the Mathworks' tech-support?
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


