2016-10-01 3 views
-1

Catch C++ユニットテストフレームワークを初めて使用しています。
cow.hcatch C++ユニットテストフレームワークへのヘッダファイルのインポート

class Cow{ 
     public: 
     Cow(std::string name); 
     void moo(std::string someWords); 
     private: 
     std::string name; 
    }; 

cow.cpp

Cow::Cow(std::string cowName){ 
     name = cowName; 
    } 

    void Cow::moo(std::string someWords){ 
     std::cout << "my name is " << name <<" mooo " << someWords <<"\n"; 
    } 

私は私が構築したクラスをテストしようとしている、私は2つのファイル、 cow.cppファイルと cow.hファイルを持っ例えばとしましょう

今、クラスのテストを作成したいので、testCow.cppというテストファイルを作成し、catch.hのC++のシングルヘッダーファイルとcow.hヘッダーの
しかし、メソッドmooを呼び出そうとすると、メソッドの定義されていない呼び出しが存在し、存在しないと言います。これを解決する唯一の方法は、s ++実装全体をテストファイルにコピーすることです良い練習...
私は標準のg++コマンドを使用してファイルをコンパイルしています。崇高なテキストエディタを使ってファイルを編集しています。
このようなことが起こり、それを解決する理由は何ですか?

+0

あなたのテストコードと完全なエラーメッセージを投稿してください。 – tkausl

答えて

0

クラスの実装オブジェクトファイルにリンクする必要があります。あなたはそのすべてのオブジェクト・ファイルにリンクする必要があるプログラムを構築する際

g++ -o testCow testCow.cpp cow.o 

g++ -c -o cow.o cow.cpp 

今すぐあなたのテストプログラムをコンパイル:オブジェクトファイルにクラスの実装をコンパイルするたとえば

、プログラムが使用します。

また、あなたがすべてのコンパイルを行うには、コンパイラを取得し、それをすべてのソースファイルを与えることによって、一度にリンクすることができます:

g++ -o testCow testCow.cpp cow.cpp 

しかし、それはそれはのように非現実的なるようなプロジェクトは、一般的にそれを行う方法ではありませんプロジェクトが成長する。

関連する問題