2012-03-20 4 views
9

私は、アプリケーションを開発するために単体テストを使用する貴重な道に私の最初のステップを設定しましたが、それは急峻で荒いものです。私はQtでアプリケーションを開発していますので、QTestLibフレームワークに到達すると考えました。今、ユニットテストの作成方法を理解していますが、ユニットテストをプロジェクトに組み込む方法を理解できないようです。 私が開発したいクラス、つまりMyClassにmain.cppとcppとhファイルを持っているコンソールアプリケーションがあるとします。私は、hとcppファイルを使って、対応するテストクラスMyClassTestを作成するのが適切だと思います。しかし私はそれを同じプロジェクトに入れるべきですか?あるいは、 "メイン"プロジェクトのファイルにアクセスできる単体テスト用のプロジェクトを別途作成します(どうすればよいでしょうか)。プロジェクトを競合するメイン(...)関数でQTユニットテストを使用する

メインアプリケーションとテストの両方が同じプロジェクトにある場合、アプリケーションを実行しないでテストを実行するにはどうしたらいいですか?私はQtのチュートリアル1のユニットテストのファイルをコンソールプロジェクトに取り込みましたが、問題はQTEST_MAIN(TestQString)というマクロを使用してmain(...)という関数に展開してしまうことです。これにより、main.cpp内のmain(...)と競合が発生します。さて、私はいずれかの名前を変更することができますが、問題はまだあります - テストまたはアプリケーション自体を実行するにはどうしたらいいですか?私がQTEST_MAINマクロをオーバーライドすると(これはとにかく悪い考えです)、私はテストを無効にします。 main(...)の名前をmain.cppに変更した場合、実際のアプリケーションは決して実行されません。私はプロジェクトのための2つの別々の実行可能ファイルを作る方法があるはずだと思います。ユニットテストを実行する方法と、アプリケーションを起動する方法があるはずですが、どうやって実行するのか分かりません。

答えて

8

テスト用に個別のプロジェクトを作成してください。アプリケーションプロジェクトとテストプロジェクトをサイドバイサイドディレクトリに配置する場合、test.proファイルの相対パスを使用して、アプリケーションプロジェクトからコードユニットを参照できるはずです。

this blogで提示された非常に便利なテストランナーを使用します。

+0

私はちょうど数分前にその記事につまずいた、実際に行く方法のように思える - ありがとう! – Puchatek