none
boost testでテストを作成した際、テストエクスプローラにテストが検出されない RRS feed

  • 質問

  • ■環境

    • Windows 8.1 64bit 日本語版
    • Visual Studio Professional 2017 ver.15.9.14(「Boost.Testのテストアダプター」はインストール済み)
    • boost 1.67.0(boost.orgから自前でDLし、bootstrap実行→b2でビルド実施)

    ■問題再現の手順

    参考URL:https://docs.microsoft.com/ja-jp/visualstudio/test/how-to-use-boost-test-for-cpp?view=vs-2017

    1. コンソールアプリを新規作成
    2. 既存のファイルを全て削除
    3. ソリューションエクスプローラ上のプロジェクトを右クリックして「追加」→「新しい項目」→「Test」→「Boost.Test」によって.cppを追加
    4. プロジェクトのプロパティを開き、プリコンパイル済みヘッダの設定を「使用しない」に変更、includeパスにboostを追加
    5. ビルド

    ■期待している結果と問題

    BOOST_AUTO_TEST_CASE(x)のxが「テスト エクスプローラー」ウィンドウに出てほしいが、何も表示されない。「全てを実行」リンクを押下してもテストは実行されない。

    ※F5を押下して普通にデバッグ実行すると、コンソールアプリは起動しテスト結果がコンソールに表示される。

    ■質問

    • Boost.Testで実装したテストが「テストエクスプローラー」に表示されている方はいらっしゃいますか?
    • 表示されている方は、テストを実装する際、上記と異なる手順でしたでしょうか?


    2019年8月6日 5:44

回答

  • Takahiro Toyamaさん、こんにちは。フォーラムオペレーターのHarukaです。
    MSDNフォーラムにご投稿くださいましてありがとうございます。

    ご説明に基づいて、[プロパティ]-> [C / C ++]-> [コード生成]に移動し、ランタイムライブラリをMTまたはMDに変更してから、ソリューション構成でReleaseとして変更してください。 
    次に、それを再構築して、テストエクスプローラーでテストが表示されるかどうかを確認します。


    また、runsettingsファイルをテストプロジェクトにバインドしようとすることもできます。
    詳細については、この類似の問題をご参照してください。

    どうぞよろしくお願いします。


    MSDN/ TechNet Community Support Haruka

    ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、
    ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    2019年8月15日 8:54
    モデレータ

すべての返信

  • Takahiro Toyamaさん、こんにちは。フォーラムオペレーターのHarukaです。
    MSDNフォーラムにご投稿くださいましてありがとうございます。

    ご説明に基づいて、[プロパティ]-> [C / C ++]-> [コード生成]に移動し、ランタイムライブラリをMTまたはMDに変更してから、ソリューション構成でReleaseとして変更してください。 
    次に、それを再構築して、テストエクスプローラーでテストが表示されるかどうかを確認します。


    また、runsettingsファイルをテストプロジェクトにバインドしようとすることもできます。
    詳細については、この類似の問題をご参照してください。

    どうぞよろしくお願いします。


    MSDN/ TechNet Community Support Haruka

    ~参考になった投稿には「回答としてマーク」をご設定ください。なかった場合は「回答としてマークされていない」も設定できます。同じ問題で後から参照した方が、情報を見つけやすくなりますので、
    ご協力くださいますようお願いいたします。また、MSDNサポートに賛辞や苦情がある場合は、MSDNFSF@microsoft.comまでお気軽にお問い合わせください。~

    2019年8月15日 8:54
    モデレータ
  • 頂いた内容について2つのことをトライしました。結果としてテストエクスプローラにテストが検出され、デバッグもできるようになりました。ありがとうございます。

    (1)

    /MTまたは/MDはReleaseビルド用のオプションであると思います。プロジェクトプロパティはReleaseビルド構成においてデフォルトで/MDがセットされていましたので、ツールバー「標準」における「ソリューション構成」を"Release"に設定してリビルドしたところ、テストエクスプローラには期待した通りテストが出現し、実行できました。「ソリューションプラットフォーム」は"x64"でも"x86"でもテストエクスプローラにテストが出現しました。

    ただしソリューション構成をDebugにしたり、ソリューションプラットフォームを変更(x86→x64またはその逆)すると、以降はリビルドをかけない限りは適切にテストが見つかりませんでした。

    バッチビルドですべての構成(Debug-x86, Debug-x64, Release-x86, Release-x64)を一括でリビルドした場合は、テストエクスプローラからは全くテストが認識できないこともわかりました。

    結果としてこの方法ではDebugビルドでテストをデバッグできないため、下記(2)で示す.runsettingsを使ったやり方で運用することにしました。

    (2)

    .runsettingsは、テストプロジェクトの.vcxprojファイルがあるフォルダに単に追加しただけでは何ら変化がありませんでした。そこでメニュー「テスト」→「テスト設定」→「テスト設定ファイルの選択」で作成した.runsettingsファイルを選択したところ、テストエクスプローラにテストが検出されるようになりました。またこのときはDebugビルドでもテストは検出でき、かつテストを右クリックして「選択したテストのデバッグ」が実施でき、さらにウォッチで(最適化で消されるであろう)変数の内容を確認することもできました。


    2019年9月2日 5:39