Cコードをテストし、テストフレームワークとしてチェックを使用することにしました。しかし、コードをコンパイルする方法がわかりませんか?チュートリアルでは、すでに非常に巨大なmakefileがありますが、それらをビルドする方法や、必要なgccフラグについては説明していません。
簡単なテストを実行するにはどうすればよいですか?
Cコードをテストし、テストフレームワークとしてチェックを使用することにしました。しかし、コードをコンパイルする方法がわかりませんか?チュートリアルでは、すでに非常に巨大なmakefileがありますが、それらをビルドする方法や、必要なgccフラグについては説明していません。
簡単なテストを実行するにはどうすればよいですか?
autotools で達成するのは非常に簡単です。configure.acで、ターゲット システムにチェック ユニット テスト フレームワークが存在するかどうかを確認します。
PKG_CHECK_MODULES([CHECK],[check >= 0.8.2],[have_check="yes"],
AC_MSG_WARN(['Check' unit testing framework not found. It would be impossible to run unit tests!"])
[have_check="no"])
Makefile.amでは、ユニット テストをビルドするためにどのファイルとどのようにコンパイルするかを指定します。
if HAVE_CHECK
check_PROGRAMS = bin/some_unit_tests
bin_some_unit_tests_SOURCES = source1.c source2.c ...
bin_some_unit_tests_CFLAGS = -g -pg -O2 -fprofile-arcs -ftest-coverage ...
bin_some_unit_tests_LDFLAGS = -g -pg -no-install
bin_some_unit_tests_LDADD = @CHECK_LIBS@
TESTS = bin/some_unit_tests
TESTS_ENVIRONMENT = CK_FORK=yes
CK_VERBOSITY = verbose
CLEANFILES = some_unit_tests.log
endif
次に、次のコマンドを発行して単体テストを実行します。
make check
-pg フラグを使用すると、単体テストの実行からプロファイリング情報を取得できます。
個人的に私はチェックに慣れていません。
CppUTestを使用し、 TDD For Embedded Cを読むことをお勧めします。適切な説明があり、C と C++ の両方で機能します。
もう 1 つのオプションは Unity で、これも参照書籍に記載されています。
単体テストに check を使用するオープン ソース プロジェクトがあります。その一例がTORQUEです。svn を使用してソースをチェックアウトできます。現在、トランクに単体テストを表示する必要があります-svn co svn://svn.clusterresources.com/torque/trunk
セットアップ方法の 1 つの例については、ディレクトリ src/lib/Libutils/test/resizable_array を参照してください。bsa2000の答えが言うように、メイクファイルの変更に関しては多くのセットアップがあります。
「configure->make->make install」の後に、「libcheck.a」というアーカイブ ファイルを取得できます。通常、libcheck.a は「/usr/lib」または「/usr/local/lib」にインストールされ、Gcc は libcheck.a の場所を自動的に見つけることができます。「gcc -o test_add test_add.c -lcheck」のように、コンパイル コマンドラインに -lcheck オプションを追加する必要があります。
check 以外にも、 lcut、cmockeryなど、C 単体テスト用のフレームワークが他にもたくさんあります。