std.testingによるアサーション
expect、expectEqualなどの使い方を学びます。
「std.testingによるアサーション」はCoddyKit上の無料Zig Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはZig Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Zig Academyコースには全4レッスンが含まれています。
testing名前空間
Zigのアサーションヘルパーはstd.testingにあります。短い名前で取り込むと、テストブロック内の各チェックをすっきり記述できます。
const testing = std.testing;ブール値にはexpectを使う
最も単純なヘルパーはexpectです。ブール値を1つ受け取り、その条件がfalseの場合にテストを失敗させます。
try testing.expect(value > 0);ヘルパーはエラーを返す
すべてのテストヘルパーは、失敗時にエラーを返します。そのため、必ずtryを前置します。これによりテストが停止し、結果が報告されます。
値にはexpectEqualを使う
2つの値を比較するにはexpectEqualを使います。等しいかどうかを確認し、失敗した場合は期待値と実際の値の両方を出力します。
try testing.expectEqual(5, add(2, 3));期待値を先に指定する
expectEqualでは、最初の引数が期待値で、2番目の引数がコードの生成した値です。引数の順序によって、失敗メッセージの内容が変わります。
try testing.expectEqual(42, result);スライスを比較する
2つのスライスは、ポインターではなく要素が一致するときに等しいと判定されます。expectEqualSlicesを使い、要素の型を指定します。
try testing.expectEqualSlices(u8, "hi", out);文字列を比較する
テキストにはexpectEqualStringsを使います。2つのバイトスライスを比較し、異なる場合は読みやすい差分を出力するため、出力のチェックに最適です。
try testing.expectEqualStrings("ok", msg);エラーをアサートする
呼び出しが失敗するべき場合もあります。expectErrorで囲むと、値ではなく特定のエラーを返すことをアサートできます。
try testing.expectError(error.Bad, parse("x"));浮動小数点数を近似比較する
浮動小数点数が完全に一致することはほとんどありません。expectApproxEqAbsに小さな許容誤差を指定し、わずかな丸め誤差でテストが失敗しないようにします。
try testing.expectApproxEqAbs(1.0, x, 0.001);失敗時の出力を読む
アサーションが失敗すると、Zigはレポートに期待値と実際の値をそのまま出力します。この差分を見ると、通常はバグの場所をすぐに特定できます。
適切なヘルパーを選ぶ
データに合ったヘルパーを選びます。スカラー値にはexpectEqual、シーケンスにはスライス用または文字列用のヘルパー、失敗する経路にはexpectErrorを使います。
クイックチェック
テストで2つのテキスト値が完全に等しいことをアサートする必要があります。最適なヘルパーはどれでしょうか。
まとめ
std.testingのツールキットについて学びました。expect、expectEqual、スライスと文字列のチェック、そしてexpectErrorがあります。どれも前にtryが必要です。✅
よくある質問
「std.testingによるアサーション」レッスンは無料ですか?
はい。「std.testingによるアサーション」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Zig Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Zig Academyコースには全4レッスンが含まれています。
「std.testingによるアサーション」で何を学びますか?
expect、expectEqualなどの使い方を学びます。 ブラウザで直接実行するハンズオンコードでZig Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Zig Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのZig Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「std.testingによるアサーション」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このZig Academyレッスンでコードを書いて実行できますか?
はい。すべてのZig Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- testブロックを書く
- std.testingによるアサーション
- Testing Allocatorでメモリリークを検出する
- テストの実行と絞り込み