67084


VS2019のdllを対象にしたGoogleTestでDebugモードを選択しているときのみテストエクスプローラーにテストが表示されなくなります  
Releaseモードでは問題なくテストケースが表示され、実行も可能です  
GoogleTestプロジェクトを作成するときは「GoogleTestの使用方法」を「ダイナミックライブラリ」で、「C++ランタイムライブラリ」は「スタティックライブラリ(推奨)」を選択して作成しています

コードは以下の通りです

[code]

    //main.cpp
    #include "header.h"
    void MyClass::hello() {
        std::cout << "hello" << std::endl;
    }
    
    //header.h
    #pragma once
    #include <iostream>
    
    class __declspec(dllexport) MyClass {
    public:
        MyClass() {};
        void hello();
    };
    //test.cpp
    #include "pch.h"
    #include "../header.h"
    
    TEST(TestCaseName, TestName) {
        MyClass my = MyClass();
        my.hello();
      EXPECT_EQ(1, 1);
      EXPECT_TRUE(true);
    }
    
[/code]

## 更新

問題が再現するソリューションをGithubにアップロードしました  
<https://github.com/hajime-te/Project2>

Visual Studioのスクショも添付します  
[![Releaseモードでテストが表示されている](https://i.stack.imgur.com/wpeKD.png)](https://i.stack.imgur.com/wpeKD.png)  
[![Debugモードに切り替えるとテストが見えなくなる](https://i.stack.imgur.com/cQmdv.png)](https://i.stack.imgur.com/cQmdv.png)

## 再更新

環境の情報を記載します  
Windows10 1903  
Visual Studio Professional 2019 Ver 16.5.2  
Google TestのNugetパッケージ  
Microsoft.googletest.v140.windesktop.msvcstl.dyn.rt-dyn V1.8.1.3

## 再再々更新

Visual Studioの出力ウィンドウで「テスト」タブがありましたので、そちらを確認するとエラーメッセージが確認できましたので添付します  
test.exeがテスト実行ファイル、target.dllがテスト対象のdllファイルになります

[code]

    'Test.exe' のデバッグ シンボルが見つかりませんでした。'--list_content' 探索を使用するには、デバッグ シンボルが使用可能であることを確認するか、.runsettings ファイルによって '<ForceListContent>' を使用します。
    Test Adapter for Google Test: テストの検出を開始しています...
    テストの検出が完了しました。全体の期間: 00:00:00.2503856
    target.dll Test.exe で使用できるテストはありません。テスト探索プログラムおよび実行プログラムが登録されており、プラットフォームおよびフレームワークのバージョン設定が適切であることを確認してから、もう一度お試しください。
    ========== テスト検出が完了しました: 4.6 秒 に 0 件のテストが見つかりました ==========
    
[/code]

これを確認して、2つのプロジェクトのプロパティを確認しましたが一致しておりました  
\- ターゲットプラットフォームバージョン: 10.0.18362.0  
\- プラットフォーム: x64  
\- プラットフォームツールセット: Visual Studio 2015 (v140)


CC BY-SA 4.0
2020-05-27T13:04:39.120
67044
2020-06-05T05:12:46.273
2020-06-04T04:35:02.267
19500
19500
question
c++ visual-studio テスト
Visual StudioのGoogleTestがDebugモードの時だけ検出されない


何かの試行錯誤の結果かもしれませんが、テスト対象の`Project2`プロジェクトのプロパティでおかしなところがあります。

  * `Win32`の`Debug`モードの時に、`プラットフォームツールセット`が`Visual Studio 2015 (v140)`になっています。  
他は`Visual Studio 2019 (v142)`です。

  * `Win32`の`Release`モードの時に、`構成の種類`が`アプリケーション (.exe)`になっています。  
他は`ダイナミック ライブラリ (.dll)`です。

なお、`プラットフォームツールセット`の`Visual Studio 2015 (v140)`は、`Visual Studio 2015 (v140)
(インストールされていません)`かもしれません。

これらを他と合わせるようにしてみたら、何か状況に変化があるかもしれません。

`プラットフォームツールセット`を`Visual Studio 2019 (v142)`に、`構成の種類`を`ダイナミック ライブラリ
(.dll)`に統一する。

* * *

そういえば、テストエクスプローラーのデザインが違うのですが、使っているエディションの違いとかあるのでしょうか？あるいは設定しているテーマの関係かもしれませんが。  
当方はWindows用のVisual Studio Community 2019で、こんな画面です。  
[![テストエクスプローラー画像](https://i.stack.imgur.com/GU9zK.jpg)](https://i.stack.imgur.com/GU9zK.jpg)

当方でプラットフォームツールセットと構成の種類を統一した状況では、Debugモードかどうかにかかわりなく、Debug/Release,x86/x64のどれでも何か構成を変更した後にテストエクスプローラーを起動して「実行」(左から2つ目の緑色の▶)や「直前の実行の繰り返し」(左から3つ目の丸に沿った矢印に囲まれた緑色の▶)をクリックすると、質問にあったような以下の表示になります。  
[![テストエクスプローラーエラー画像](https://i.stack.imgur.com/pAniM.jpg)](https://i.stack.imgur.com/pAniM.jpg)

上記が発生した状態で「すべてのテストを実行」(左端の陰付き緑色の▶)をクリックすると、ビルドとテストが実行されて正常にテストのツリーが表示された状態になります。  
**それ以後はDebug/Release,x86/x64の構成を変更せずにいれば「実行」「直前の実行の繰り返し」を行うことが出来ます。**

そうした動作そのものが何か問題なのでしょうか？ あるいはプラットフォームツールセットと構成の種類を統一した状況でもそういう動作にならないとか？

* * *

当方の版数は以下です。WindowsとVisualStudioの版数がちょっと違いますね。

Windows10 1909  
Visual Studio Community 2019 Ver 16.6.0  
Microsoft.googletest.v140.windesktop.msvcstl.dyn.rt-dyn V1.8.1.3

* * *

当方では、GitHubで提示されたソリューション＆プロジェクトを、更新された以下の情報で設定して問題無くコンパイル・テストが実行されています。

>   * ターゲットプラットフォームバージョン: 10.0.18362.0
>   * プラットフォーム: x64
>   * プラットフォームツールセット: Visual Studio 2015 (v140)
>

他に何か試すとしたら、以下のような点くらいでしょうか。

  * Visual Studio自身の起動を「管理者として実行」で行ってみる
  * Visual Studio InstallerにてVisual Studioを「修復」してみる
  * Visual Studio InstallerにてVisual Studioを最新版(16.6.1)に「更新」してみる
  * Visual Studio Installerの「更新」でC++関連の個別のコンポーネントを指定して最新のものにしてみる
  * Windows10を1909や、あるいは2004(May 2020 Update)まで更新してみる


CC BY-SA 4.0
2020-05-28T12:51:56.930
67084
2020-06-05T05:12:46.273
2020-06-05T05:12:46.273
26370
26370
67044
answer