メインコンテンツ

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

この例では、TestRightTriLiveScriptExample.mlx という名前のライブ スクリプトを記述して関数をテストする方法について説明します。この関数は直角三角形の角度を返します。この関数をテストするためのライブスクリプトベースのユニット テストを作成します。ライブ スクリプトに数式とイメージを含めることで、テストのドキュメント化に役立てることができます。

ライブスクリプトベースのテストは以下の規則に従います。

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

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

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

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

テストする関数の作成

現在のフォルダー内の rightTri.m という名前のファイルで、rightTri 関数を作成します。この関数は、三角形の 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

得られる直角三角形のすべての角度の和は 180 度でなければなりません。角度の和のテストを作成します。同じテスト内に複数の assert ステートメントをもつことができます。ただし、アサーションが失敗した場合、MATLAB で残りのステートメントは評価されません。

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 三角形

Right triangle whose angles are 30, 60, and 90 degrees

辺が 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 度でなければなりません。この条件のテストを作成します。

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

テストの実行

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

参考

関数

トピック