3

QtアプリケーションをQTestLibで単体テストしようとしています。新しいVisualStudio2012にはC++テストフレームワークが組み込まれており、そのためにグーグルで検索します。このページでは、ネイティブプロジェクトをテストするためのさまざまな方法について説明しています。通常のプログラム用とテスト用の2つの異なるプロジェクトがあります。実際、私のアプリケーションはDLLではありませんが、単純なC++exeです。別のプロジェクトでテストして、.objファイルまたはlibsに対してリンクするのが最善の方法ですか?私はDLLではないので、ソースコードから何もエクスポートしません

4

1 に答える 1

2

これは、unit1、unit2、および unit3 の 3 つのコード ユニットを含む典型的な QtTest プロジェクトです。

    project/
    ├── project.pro
    ├── src
    │   ├── main.cpp
    │   ├── src.pro
    │   ├── unit1.cpp
    │   ├── unit1.h
    │   ├── unit2.cpp
    │   ├── unit2.h
    │   ├── unit3.cpp
    │   └── unit3.h
    └── tests
        ├── stubs
        │   ├── stubs.pro
        │   ├── unit1_stub.cpp
        │   ├── unit2_stub.cpp
        │   └── unit3_stub.cpp
        ├── test1
        │   ├── test1.cpp
        │   ├── test1.h
        │   └── test1.pro
        ├── test2
        │   ├── test2.cpp
        │   ├── test2.h
        │   └── test2.pro
        ├── test3
        │   ├── test3.cpp
        │   ├── test3.h
        │   └── test3.pro
        └── tests.pro

このプロジェクトでは、4 つのバイナリが生成されます。1 つのアプリケーション自体と、各ユニットをテストするための 3 つのテスト バイナリです。たとえば、test1 には、src/unit1.cpp、src/unit1.h、およびスタブ化された unit2 および unit3 (src/unit2.h、tests/stubs/unit2_stub.cpp、src/unit2.h、tests/stubs/unit3_stub) が含まれている必要があります。 cpp。この種のセットアップでは、src/unit1.cpp と tests/stubs/unit1_tests.cpp が 2 回コンパイルされ、ユニットの数が増えると、この数が増えます。これは小規模なプロジェクトでは問題になりませんが、大規模なプロジェクトではビルド時間が大幅に増加する可能性があります。

次に、unitX.cpp と unitX.h を別々のライブラリに分割し、メイン アプリケーションへの静的リンクと各テストを複数回ビルドする必要がなくなります。

于 2012-09-03T09:55:08.793 に答える