だから、私は自分が関わっているC++プロジェクトでGoogle Testを気に入って楽しんでいるようになりました。私はまっすぐなC(ライブラリ)になる新しいプロジェクトを立ち上げているだけで、今のところ理由はわかりません。 C++フレームワークであっても、Google Testを継続して使用しないでください。 C++コンパイラを使用可能にしても問題はありません。
ストレートCコードのテストにGoogle Testを使用すべきではない具体的な理由はありますか?
ありがとう。
C++テストフレームワークを使用してCコードをテストすることは非常に一般的です。 主題に関する主要な本 はこのアプローチに従います。私は過去にgoogletestを広範囲に使用してCコードを単体テストしましたが、推奨できます。
私はそれについて有用なブログ記事を書きました: http://meekrosoft.wordpress.com/2009/11/09/unit-testing-c-code-with-the-googletest-framework/
GoogleのすべてのC++コードと同様に、Google Testは例外を使用しないため、例外の安全フローは問題になりません。ヘッダーがC++互換(C++キーワードを使用せず、正しいリンケージでシンボルをエクスポートする)であれば、問題ありません。
別のポイントを追加すると思いました。gtestはC++であるため、テスト対象のCヘッダーをC++として解析することになります。これは、テストがヘッダーがCから消費されることを保証しないことを意味します。最近、私が作成しているCライブラリでこれに遭遇しました。
ジェイソン、そのことに注意してください!!! :D
Meekrosoftが言ったように、はい、可能です。私も彼のウェブサイトを使用しようとしました。動作しますが、1つの大きな問題があります。
GTestはオブジェクト指向ツールであり、C言語はそうではありません!
たとえば、GTestには、オブジェクトをパラメーターとして要求する多くの関数(API全体の80%)があります。たとえば、
EXPECT_CALL(turtle, PenDown()) // turtle is object(class) and PenDown() is method of that object
.Times(AtLeast(1));
gTestウェブサイト https://code.google.com/p/googlemock/wiki/ForDummies から、expect_equal、expect_bigger_thanなどのマクロのみを使用します...
ツール CMocka (または他のCユニットテストツール)をお勧めします。また、グーグル(グーグル以外の開発者のグループによって変更)からのものであり、C言語用に直接作成されます。 Cタイプのソースコードをテストする場合に使用します。
これがお役に立てば幸いです.. :-)良い一日を.. :-)
名前を付けられませんでした。 「通常の」Cにはないものがあると思います。たとえば、TestCaseは特定のクラスから派生したものだと思います。しかし、テスト内で好きなものをテストできるので、なぜCではないのですか?