2

私は最近、C++ と KDevelop を使用して個人的なコーディング プロジェクトに取り組み始めました。私はハッキングすることから始めましたが、先に進む前に適切な単体テスト スイートをセットアップした方が、長期的にはより良くなると思います。別のテスト ランナー実行可能ファイルをサブ プロジェクトとして作成しましたが、それに追加したテストは適切に機能しているように見えます。これまでのところ、成功。

ただし、明示的に実行するときだけでなく、ビルドするたびに単体テストを実行したいと思っています。これは、作成した混乱を便利なライブラリに分割する場合に特に当てはまります。それぞれのライブラリには、おそらく独自のテスト実行可能ファイルがあります。それらをすべて手動で実行するのではなく、ビルド プロセスの最終ステップとして実行したいと考えています。プロジェクト メニューと automake マネージャのオプションをすべて調べましたが、これを設定する方法がわかりません。

これは、makefile を手動で編集することでおそらく実行できると思います。残念ながら、私の makefile-fu は少し脆弱です。また、次に IDE で何かを変更したときに、手動で行った変更が KDevelop によって上書きされるのではないかと心配しています。したがって、KDevelop 自体を使用してこれを行う方法がある場合は、その方法を選択したいと思います。

ビルド プロセスの一部として KDevelop にテスト実行可能ファイルを実行させる方法を知っている人はいますか? ありがとうございました!

(私は KDevelop に 100% 縛られているわけではありません。KDevelop でこれができない場合、またはこれをはるかに簡単にする IDE があれば、私は確信して切り替えることができます。)

4

2 に答える 2

3

デフォルトの`make`ターゲットを操作してテストを実行する こともできますが、

作る

すべてのテストを実行します。代わりに「チェック」ターゲットを使用する必要があります。これは、ソフトウェアパッケージで認められている準標準です。そうすることで、テストは実行したときにのみ開始されます

チェックする

その後、「make」だけでなく「makecheck」を実行するようにKDevelopを簡単に構成できます。

(KDevelopを介して)automakeを使用しているため、「チェック」ターゲットを自分で作成する必要はありません。代わりに、 `Makefile.am`を編集して、いくつかの変数を設定するだけです。

テスト=..。

詳細については、 automakeのドキュメント「テストスイートのサポート」 を参照してください。

于 2008-09-20T13:00:57.777 に答える
0

私はそれをこのように動かしました:

$ cat src/base64.c
//code to be tested
int encode64(...) { ... }

#ifdef UNITTEST
#include <assert.h>
int main(int argc, char* argv[])
{
  assert( encode64(...) == 0 );
  return 0;
}
#endif //UNITTEST
/* end file.c */

$ cat src/Makefile.am
...
check_PROGRAMS = base64-test
base64_test_SOURCES = base64.c
base64_test_CPPFLAGS = -I../include -DUNITTEST
TESTS = base64-test

make チェックは src/base64-test をビルドして実行します:

$ make check
...
PASS: base64-test
==================
All 1 tests passed
==================
...

今、私はそれをすべて m4 マクロとしてカプセル化し、次のように使用しようとしています:

MAKE_UNITTEST(base64.c)

上記のソリューションのようなものが生成されるはずです。

お役に立てれば。

于 2011-12-22T18:49:33.850 に答える