アプリケーションの各クラスには、.h ファイルと .cc ファイルがあります。ただし、私の単体テスト プロジェクトでは、状況が少し異なります。ここでは、テストしたいアプリケーション クラスごとに gtest ユニット テスト クラスを用意しています。各クラスは.ccファイルでのみ定義および宣言されています。だからいいえ.h。
.h ファイルが必要だとは思わなかったので、この決定を下しました。
- テストクラスを他の場所で再利用することはありません。それは面倒だからです。
- tdd を実行して、testx.h、testx.cc、x.cc、xh、ix.h、mockz.h などの間を常にジャンプする場合。
- それで、私が思ったファイルが1つ少なくなりました。
テスト .cc ファイルごとに .obj ファイルを取得しますが、少なくとも VS2012 では、そのようなファイルの 1 つを変更すると、他のすべてのテスト .cc ファイルが再構築されます。
この場合、テスト対象のクラスは再構築されないことに注意してください。これらの「おかしな」.cc ファイルだけが、私のテストがあります。このようなファイルは次のようになります。
TestX.cc:
#include <gtest/gtest.h>
#include "X.h"
#include "factory/YFactory.h"
namespace A
{
class TestX : public ::testing::Test
{
protected:
TestX() {
}
};
TEST_F (TestX, firstTest)
{
EXPECT_TRUE(true);
}
}
このようにテストを実装するのは間違っていると思いますか? そうでない場合、なぜそれらは常に再構築されているのですか?
現時点では、この問題を回避するために、実装しているクラスのテスト .cc ファイルのみを含めています。他のすべてのファイルはプロジェクトに残ります。