エラーをスローするクラスをテストしたいが、Matlab 2011bを使用していて、matlab.unittest(matlab.unittest.TestSuite.fromFileを持つ)が見つからない。Unittest Matlab version 2011
何を使用できますか?
エラーをスローするクラスをテストしたいが、Matlab 2011bを使用していて、matlab.unittest(matlab.unittest.TestSuite.fromFileを持つ)が見つからない。Unittest Matlab version 2011
何を使用できますか?
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.
>>
私はこのリンクを見つけました。私は説明としてしようとします。しかし、多分私は私が怒鳴るコードをテストしたい場合はどのように私は行うことができ、情報を逃した:(側面は(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
私はできる限りアップグレードすることが最善のアプローチだと思うし、必要な機能をすべて備えており、非常に堅牢な豊富な機能を備えています。次に、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)。 –
MATLABのアップグレードを使用することができます。 – Adriaan
この作業はhttps://se.mathworks.com/matlabcentral/fileexchange/47302-xunit4 –