Cトラックでのテスト

ExercismでCの演習をテストする方法を学びましょう


演習にはそれぞれ、単体テストとMakeのビルドレシピが付いてきます。実装を書くのは自分自身です。

各テストファイルは、実装とリンクしてテストを実行するコンソール用の実行ファイルを作るためのものです。 テストの実行ファイルを動かすと、失敗したテストごとにメッセージが表示され、テストが失敗したときは0以外の終了ステータスが報告されます。

演習を進めるには:

  • まずMakeで最初のビルドを作ります
  • それぞれの単体テストについて:
    • TEST_IGNORE()の行を削除します。
    • コンパイルエラーを解消して、テストが失敗する状態にします。
    • テストが通るだけの最小限の実装を書きます。
    • 読みやすさを高め、重複を減らすために、実装をリファクタリングします。

テストのコンパイルと実行

各演習には、単体テストの入った.cファイルと一緒にmakefileが付いてきます。 Makeファイルを編集する必要はありません。 用意されているMakeファイルは、実装が演習名のヘッダーファイル(.h)とソースファイル(.c)として存在することを前提にしています。

たとえば、演習bobでは、bob.hとbob.cに実装があることを想定しています。 名前にハイフンが含まれる演習では、ソースファイルはアンダースコアを使うものとみなされます。たとえばword-countはword_count.hとword_count.cを想定しています。 実装が十分にシンプルで、ヘッダーだけに収められると判断したなら、.cファイルは省略できます。

Makeを実行する前に、最初の実装ファイルを作ってください。 演習bobでMakeを実行したときにbob.hとbob.cがないと、Makeはファイルが見つからないというエラーを出します。 これらのファイルは空でもかまいませんが、必ず存在している必要があります。

コードをビルドする

コードをビルドする一番簡単な方法は、コマンドライン(CLI)でmakeを使うことです。 Linuxではbashなどでコマンドラインを使えます。MacOSではターミナルを使います。 Windows 10では、Windows Subsystem for Linux(WSL)のBashが使えます。

これを行うには、現在のディレクトリが演習のフォルダーであるとして:

$ make

これでコードがコンパイルされ、テストが実行されます。

makefileには、メモリリークや配列の範囲外アクセスといったよくある間違いをチェックするビルドも用意されています。 これらのチェックを実行するには、コマンドラインで次のようにします:

$ make memcheck

後片付け

ビルドの後片付けをするには、makeに実行ファイルを含むビルドの出力をすべて削除するよう指示します:

$ make clean

MacOSでのビルド方法

MacOSではXcodeも使えます。 コードをビルドするには、ツールバーから_Build_を選びます。