Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

ライブ スクリプトを使用したテストの記述

この例では、ライブ スクリプト 'TestRightTriLiveScriptExample.mlx' を記述して、作成した関数をテストする方法について説明します。このサンプル関数は直角三角形の角度を計算します。この関数をテストするためのライブスクリプトベースのユニット テストを作成します。

ライブスクリプトベースのテストは以下の規則に従わなければなりません。

  • テスト ファイル名の先頭または末尾は 'test' という語でなければなりません。この大文字小文字は区別されません。テスト ファイル名の先頭または末尾が 'test' という語でない場合、特定の状況でファイル内のテストが無視されることがあります。

  • 各ユニット テストはライブスクリプト ファイルの個別のセクションに配置します。セクションの見出しのスタイルが見出し 1 である場合、見出しがテスト要素の名前になります。それ以外の場合は、MATLAB® がテストに名前を割り当てます。

  • ライブスクリプトベースのテストを実行する方法を検討します。ライブ エディターで [実行] ボタンを使用してテストを実行する場合、MATLAB でテストの失敗が検出されるとスクリプトの実行が停止され、残りのテストは実行されません。関数 runtests などでユニット テスト フレームワークを使用してライブ スクリプトを実行する場合、MATLAB でテストの失敗が検出されても残りのテストは実行されます。

  • ライブ スクリプトがテストとして実行されると、1 つのテストで定義された変数に他のテストからアクセスすることはできません。同様に、他のワークスペースで定義された変数はテストにアクセスできません。

この例の外部で、現在の MATLAB フォルダー内のファイル rightTri.m に関数を作成します。この関数は、三角形の 2 辺の長さを入力としてとり、対応する直角三角形の 3 つの角度を返します。入力する辺は三角形の短い 2 つの辺であり、斜辺ではありません。

type rightTri.m
function angles = rightTri(sides)

A = atand(sides(1)/sides(2));
B = atand(sides(2)/sides(1));
hypotenuse = sides(1)/sind(A);
C = asind(hypotenuse*sind(A)/sides(1));

angles = [A B C];

end

テスト: 微小角近似

ライブ スクリプトに数式とイメージを含めることで、テストのドキュメント化に役立てることができます。微小角近似用に次のテストを作成します。浮動小数点数を比較するときは、通常、比較の許容誤差を指定します。

関数 rightTri は、sin(θ)θ となる微小角近似と一致する値を返さなければなりません。

angles = rightTri([1 1500]);
smallAngleInRadians = (pi/180)*angles(1); % convert to radians
approx = sin(smallAngleInRadians);
assert(abs(approx-smallAngleInRadians) <= 1e-10, 'Problem with small angle approximation')

テスト: 角度の和

kak=180

同じテスト内に複数の assert ステートメントをもつことができます。ただし、最初のアサーションが失敗した場合、MATLAB で残りのステートメントは評価されません。

得られる直角三角形のすべての角度の和は常に 180 度でなければなりません。

angles = rightTri([7 9]);
assert(sum(angles) == 180)
 
angles = rightTri([4 4]);
assert(sum(angles) == 180)
 
angles = rightTri([2 2*sqrt(3)]);
assert(sum(angles) == 180)

テスト: 30-60-90 三角形

triangle.png

三角形の辺が 1 および 3 に簡約されることをテストします。この場合、角度は 30, 60, and 90 です。

tol = 1e-10;
angles = rightTri([2 2*sqrt(3)]);
assert(abs(angles(1)-30) <= tol)
assert(abs(angles(2)-60) <= tol)
assert(abs(angles(3)-90) <= tol)

テスト: 二等辺三角形

二等辺三角形の場合、直角ではない角は両方とも 45 度でなければなりません。それ以外の場合、assert はエラーをスローします。

三角形の 2 辺が等しいことをテストします。この場合、対応する角度は等しくなります。

angles = rightTri([4 4]);
assert(angles(1) == 45)
assert(angles(1) == angles(2))

テストを実行するには、ベスト プラクティスとして関数 runtests によるテスト フレームワークを使用し、ライブ エディターの [実行] ボタンは使用しません。フレームワークのテストにより、追加の診断情報が提供されます。テストに失敗した場合、フレームワークでは後続のテストが実行されますが、ライブ エディターの [実行] ボタンでは実行されません。たとえば、このテストを MATLAB コマンド プロンプトで実行する場合は、result = runtests('TestRightTriLiveScriptExample') と入力します。詳細については、runtestsを参照してください。

参考

|

関連するトピック