0

モジュールの 1 つに CppUnit テスト ケースがあるビジュアル スタジオ プロジェクトがあります。このプロジェクトをビルドすると、dll (ModuleUnitTest.dll のようなもの) が作成されます。これらのテストを実行するにはどうすればよいですか? この dll から読み取ってテストを実行できる CppUnit で利用可能な既製のスタブはありますか? それとも自分で書く必要がありますか?これらの単体テスト ケースは長い間利用可能であり、スタブ コードがないため、記述する必要はないと考えています。誰かが dll からテストを実行する方法を教えてもらえますか?

4

2 に答える 2

0

Visual Studio のTest Explorerフローティング パネルを使用します。

于 2015-07-18T17:59:15.827 に答える
0

テスト コードのどこかにテスト ランナーが必要です。標準的な答えは、CppUnitTestMain.cpp のようなファイルを作成し、次のようなコードを追加することです (cppunit のドキュメントから直接)。

#include <cppunit/extensions/TestFactoryRegistry.h>
#include <cppunit/ui/text/TestRunner.h>

int main( int argc, char **argv)
{
  CppUnit::TextUi::TestRunner runner;
  CppUnit::TestFactoryRegistry &registry = CppUnit::TestFactoryRegistry::getRegistry();
  runner.addTest( registry.makeTest() );
  bool wasSuccessful = runner.run( "", false );
  return wasSuccessful;
}

これが個別にコンパイルされたプロジェクトの場合、TestRegistry 情報は使用できないため、LoadLibrary を使用してコーディングを行って DLL を取り込み、そこから情報を取得してテスト ランナーに追加することになると思います。不可能ではありませんが、自分で解決しなければならない作業です。

しかし、テスト レジストリを手動で処理することは、マクロが簡単に処理できるはずの余分な作業です。それは、私が尋ねたいより大きな質問につながります.なぜあなたのテストは現在DLLプロジェクトに収容されているのですか? 彼らが処刑されていない場合、あなたは彼らをどうしていますか?活用できる他の実行可能ファイルをロードして実行していますか?

私たちが通常使用する答えは、テスト プロジェクト自体を DLL ではなく実行可能ファイルにし、すべてのテスト コードを含めることです。これは、リンカの追加の依存関係設定 ($(SolutionDir)businessProject\debug\obj*.OBJ ファイル) を介してビジネス ロジックを静的にリンクします。ソリューションでは、構築中のメインの businessProject コードにプロジェクトの依存関係を追加します。

于 2013-03-29T14:19:44.780 に答える