C ++でいくつかの簡単なテストを行う必要があります(これまでに行ったことはありません)。Visual Studio 2010で作業していて、組み込みのテストタブに出くわしました。しかし、私はそれが本当に好きではなかったし、それは私にはかなり複雑に思えます。
必要なのはカスタムmain()メソッドだけなので、クイックコンソールアプリを起動して、クラスが正常に機能するかどうかを確認できます。
プログラムの主要な開始点となるラッパーランチャーファイルを作成することにより、プリプロセッサ定義でこれを克服することにしました。
したがって、私のmain.cppファイルには次のものが含まれています。
#define DESIRED_TEST "some_test.cpp"
#ifndef DESIRED_TEST
#include "main_program.cpp"
#else
#include DESIRED_TEST
#endif
main_program.cppは、プログラム全体を実行するファイルです(mainメソッドが含まれています)。ご覧のとおり、DESIRED_TESTを定義してインクルードファイルを割り当てると、main_program.cppはインクルードされず、テストファイルのみがビルドされることになります(メインメソッドも含まれています)。ただし、コンパイルに関しては、次の出力が得られます。
1>main.obj : error LNK2005: _main already defined in some_test.obj
1>main_program.obj : error LNK2005: _main already defined in some_test.obj
1>C:\....... : fatal error LNK1169: one or more multiply defined symbols found
プログラムの主な開始点はmain.cppであり、他のすべてのオブジェクトファイルの複数の定義を無視して、そのファイルに従ってのみコンパイルおよびリンクする必要があることをコンパイラにどのように伝える必要がありますか?
この問題(main.cppファイル)をどのように克服したかを次に示します。
#define DESIRED_TEST "some_test.h"
#ifndef DESIRED_TEST
int main(int argc, char *argv[])
{
// main program code here
}
#else
#include DESIRED_TEST
int main() {
FUNCTION_CALL();
}
#endif
some_test.hファイル:
void some_test();
#define FUNCTION_CALL some_test
これで必要なのは、すべてのテストで新しいsome_test.hファイルとsome_test.cppファイルを作成し、関数呼び出しを定義することだけです。
Visual Studioでテスト標準を学びたくない理由は、私のレベルのプロジェクトのテストが本当に簡単だからです。将来的には学ぶ必要があるかもしれませんが、物事が本当に深く複雑になったときに学びます。