0Pricing
Zig Academy · レッスン

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. testブロックを書く
  2. std.testingによるアサーション
  3. Testing Allocatorでメモリリークを検出する
  4. テストの実行と絞り込み
← Zig Academyに戻る