2017-02-26 13 views
-1

エラーをスローするクラスをテストしたいが、Matlab 2011bを使用していて、matlab.unittest(matlab.unittest.TestSuite.fromFileを持つ)が見つからない。Unittest Matlab version 2011

何を使用できますか?

+1

MATLABのアップグレードを使用することができます。 – Adriaan

+0

この作業はhttps://se.mathworks.com/matlabcentral/fileexchange/47302-xunit4 –

答えて

0

1つのアプローチは、script based testと書いています。この方法でアップグレードすると、新しいバージョンのテストフレームワークでそのまま動作します。その間に、スクリプトを呼び出すだけでテストを実行できます。あなたが今すぐアップグレードできない場合

、あなたはあなたのスクリプトでこれらのエラーをテストするには、次のヘルパー関数のようなものを書くことができます。

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); 

これをテストするには:

>> 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

私はこのリンクを見つけました。私は説明としてしようとします。しかし、多分私は私が怒鳴るコードをテストしたい場合はどのように私は行うことができ、情報を逃した:(側面は(1)<0または側面(2)) エラー場合 「 関数は= rightTri(両側) を角度( '側面は正でなければならない') end A = atand(sides(1)/ sides(2)); B = atand(辺(2)/辺(1)); hypotenuse = sides(1)/ sind(A); C = asind(斜辺* sind(A)/辺(1)); angles = [A B C]; end ' コードが正しいエラーを投げるかどうかをテストする方法はありません。 – Ccile

+0

私はできる限りアップグレードすることが最善のアプローチだと思うし、必要な機能をすべて備えており、非常に堅牢な豊富な機能を備えています。次に、verifyError(https://www.mathworks.com/help/matlab/ref/matlab.unittest.qualifications.verifiable.verifyerror.html)および/またはThrows制約(https://www.mathworks.com/)があります。ヘルプ/ matlab/ref/matlab.unittest.constraints.throws-class.html)。 –