Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 10 Next »

注意------

2021.2以前のテンプレート関数のテストケースやスタブの作成方法は、以下のページをご参照ください。

「テンプレート関数のテストケースやスタブを作成する」- C++test 2021.2 Tips

------

テンプレート関数のテストケースやスタブを作成するために従来まではテンプレート関数の特殊化(データ型の確定)が必要でしたが、C++test2022.2からはテスト対象コードで実際に引数で使用されているデータ型に対するテストケースやスタブ関数を作成することができるようになりました。
テンプレート関数の定義と、実際にそのテンプレート関数をコールしている実装部のコードの両方を含む形で、「Generate Test Suites」して作成したテストスイートならば、実装部で指定したデータ型をベースとしたテストケースを作成することができます。また、スタブにつきましては「Collect Stub Information」を実施しますと、以下の通りになります。

2021.2_CollectStubInfo.png

2022.2_CollectStubInfo.png

上図では「addVal()」というテンプレート関数に対して、2021.2までは「Colect Stub Information」を実行してもスタブ対象の関数として認識されませんが、2022.2の場合「Colect Stub Information」の設定を変更(※)することで、addVal()のテンプレート引数をint型やdouble型で実装しているため、スタブ対象も引数がint型、double型の2種類でスタブ作成が可能になっています。

(※)
 「Collect Stub Information」をユーザー定義化して
 「実行」>「全般」から「実行の詳細」の「インストゥルメント モード」>「編集」を押下して
 「C++ テンプレートのスタブを有効化」オプションをオンに設定します。

instrument_tmplstub.png

テスト実行用のテストコンフィギュレーション(「Run Unit Tests」など)も同様に設定を変更することで、テンプレート関数のスタブを使って処理を実施します。

なお、テンプレート関数のスタブを使用するには、以下の条件が必要です。

  • テンプレート関数のスタブをサポートしているコンパイラであること
    C/C++test2022.2では、以下の3種類のみをサポートしています。
    GNU GCC 5.x 以降
    Clang C/C++ Compiler 5 以降
    Microsoft Visual C++ 14.0 (2015) 以降

  • 作成したスタブコードからテンプレートの宣言を参照できること
    テンプレート宣言をソースコードに記載している場合はスタブが使えません。

  • テンプレート引数のデータ型がテンプレートの宣言よりも前に定義されていること
    データ型がソースコードで定義されている場合はスタブが使えません。

また、以下の状況ではテンプレート関数のスタブはサポートできません。

  • コンストラクターおよびデストラクター

  • 変換演算子

  • 暗黙的に定義された関数

  • default および delete 宣言された関数

  • friend 関数

  • STLメソッド

  • テンプレート関数内で宣言されたテンプレート関数

  • No labels