2017-02-26 4 views
-1

Ich möchte eine Klasse testen, die Fehler auslöst, aber ich benutze Matlab 2011b und ich finde nicht Matlab.Unittest (Matlab.Unittest.TestSuite.fromFile haben).Unittest Matlab Version 2011

Was kann ich verwenden?

+1

Sie könnten ein Upgrade von MATLAB verwenden. – Adriaan

+0

Funktioniert das https://se.mathworks.com/matlabcentral/fileexchange/47302-xunit4 –

Antwort

0

Ein Ansatz ist schreiben Sie es als script based test. Auf diese Weise funktioniert es beim Aktualisieren in den neueren Versionen mit dem Testframework. In der Zwischenzeit können Sie den Test einfach ausführen, indem Sie das Skript aufrufen.

Wenn Sie jetzt nicht aktualisieren können, dann können Sie so etwas wie die folgende Hilfsfunktion schreiben für diese Fehler in Ihrem Skript zu testen:

function assertError(fcn, errorID) 

e = MException.empty; 
try 
    fcn(); 
catch e 
end 
assert(~isempty(e), 'No error occurred. Expected an error with the id "%s"', errorID); 
assert(strcmp(e.identifier, errorID), ... 
    'Wrong error occurred. Expected id "%s", but id "%s" was thrown.', ... 
    errorID, e.identifier); 

Um dies zu testen:

>> assertError(@()error('some:id','Some message'), 'some:id') % no failure 
>> assertError(@()disp(5), 'some:id') 
    5 

Error using assertError (line 8) 
No error occured. Expected an error with the id "some:id" 

>> assertError(@()error('other:id','Some message'), 'some:id') 
Error using assertError (line 9) 
Wrong error occurred. Expected id "some:id", but id "other:id" was thrown. 

>> 
+0

Ich habe diesen Link gefunden und versuche es zu erklären. Aber vielleicht habe ich die Information verpasst haben, wie kann ich tun, wenn ich den Code testen wollen Gebrüll: ' Funktion Winkel = rightTri (Seiten) if (Seiten (1) <0 oder Seiten (2)) Fehler ("Seiten müssen positiv sein") Ende A = atand (Seiten (1)/Seiten (2)); B = atand (Seiten (2)/Seiten (1)); Hypotenuse = Seiten (1)/sind (A); C = asind (Hypotenuse * sind (A)/Seiten (1)); Winkel = [A B C]; Ende ' Ich finde nicht den Weg zu testen, wenn der Code den richtigen Fehler wirft. – Ccile

+0

Ich denke, der beste Ansatz ist ein Upgrade, wenn Sie können, dann haben Sie reichhaltige Fähigkeiten, die alle Funktionen haben, die Sie brauchen und sind sehr robust. Dann haben Sie verifyError (https://www.mathworks.com/help/matlab/ref/matlab.unittest.qualifications.verifyable.verifyerror.html) und/oder die Throw-Einschränkung (https://www.mathworks.com/ help/matlab/ref/matlab.unittest.constraints.throws-class.html). –