Visual C++ 测试开箱即用项目中的错误

Posted

技术标签:

【中文标题】Visual C++ 测试开箱即用项目中的错误【英文标题】:Errors in Visual C++ testing in-out-of-the-box project 【发布时间】:2019-07-23 18:20:22 【问题描述】:

我正在尝试将单元测试添加到本机 C++ MFC 应用程序中,但遇到了问题。我想将我的测试添加到我的主应用所在的同一个项目中(这是一个 EXE)。

为了弄清楚我的问题,我尽量保持干净:

我的项目,如果你想一起玩的话:https://drive.google.com/open?id=1ru6VU8_dBwiDHUdH_838QxHH4-oQyneG

1) 全新安装 Visual Studio 2019。我设置了支持 MFC 的 C++ 桌面开发。我没有安装 Google Test 或 Boost Test 适配器。

2)新建一个项目,选择MFC App(我的真实应用是)

一切都在 Debug / x86(32 位)中完成

3) 遵循以下说明:https://docs.microsoft.com/en-us/visualstudio/test/how-to-use-microsoft-test-framework-for-cpp?view=vs-2019

4) 添加包含目录:$(VCInstallDir)Auxiliary\VS\UnitTest\include

5) 添加库目录:$(VCInstallDir)Auxiliary\VS\UnitTest\lib

6) 向项目添加了新的 C++ 文件,使用的示例来自:https://docs.microsoft.com/en-us/visualstudio/test/microsoft-visualstudio-testtools-cppunittestframework-api-reference?view=vs-2019#Initialize_and_cleanup

#include "pch.h"
#include <CppUnitTest.h>

using namespace Microsoft::VisualStudio::CppUnitTestFramework;

BEGIN_TEST_MODULE_ATTRIBUTE()
TEST_MODULE_ATTRIBUTE(L"Date", L"2010/6/12")
END_TEST_MODULE_ATTRIBUTE()

TEST_MODULE_INITIALIZE(ModuleInitialize)

    Logger::WriteMessage(L"In Module Initialize");


TEST_MODULE_CLEANUP(ModuleCleanup)

    Logger::WriteMessage(L"In Module Cleanup");


TEST_CLASS(Class1)


public:

    Class1()
    
        Logger::WriteMessage(L"In Class1");
    

    ~Class1()
    
        Logger::WriteMessage(L"In ~Class1");
    

    TEST_CLASS_INITIALIZE(ClassInitialize)
    
        Logger::WriteMessage(L"In Class Initialize");
    

    TEST_CLASS_CLEANUP(ClassCleanup)
    
        Logger::WriteMessage(L"In Class Cleanup");
    

    BEGIN_TEST_METHOD_ATTRIBUTE(Method1)
        TEST_OWNER(L"OwnerName")
        TEST_PRIORITY(1)
        END_TEST_METHOD_ATTRIBUTE()

    TEST_METHOD(Method1)
    
        Logger::WriteMessage(L"In Method1");
        Assert::AreEqual(0, 0);
    

    TEST_METHOD(Method2)
    
        Assert::Fail(L"Fail");
    
;

7) 解决方案构建成功。

8) 测试资源管理器显示 2 个测试。我全部运行,都失败了。错误似乎在 ModuleInitialize() 调用 Logger::WriteMessage

[7/23/2019 1:27:39 PM Error] Exception Code: C0000005
    at ModuleCleanup() in C:\Work\Testing\MSUnitTestTest\MSUnitTestTest\MyTests.cpp:line 17

有趣的是,这表明它在 ModuleCleanup 中,但单击红色圆圈/白色 X 的错误消息显示 ModuleInitialize。此外,如果我调试测试,调用堆栈在 ModuleInitialize 下。

9) 如果我进入工具 > 选项 > 测试 > 常规并将日志记录级别更改为诊断,我会得到以下输出:

[7/23/2019 1:28:37 PM Diagnostic] About to Enqueue operation 'RunAllOperation', hashcode:9936281 
[7/23/2019 1:28:37 PM Diagnostic] Enqueue operation 'RunAllOperation', hashcode:9936281 
[7/23/2019 1:28:37 PM Diagnostic] Operation left in the the queue: 1
[7/23/2019 1:28:37 PM Diagnostic]   'RunAllOperation', hashcode:9936281
[7/23/2019 1:28:37 PM Diagnostic] 

[7/23/2019 1:28:37 PM Diagnostic] Processing Queue .....
[7/23/2019 1:28:37 PM Diagnostic] Operation Dequeue : 'RunAllOperation'
[7/23/2019 1:28:37 PM Diagnostic] VirtualReadOnlyTestDataStore.OperationStateChanged State=OperationSetStarted, operationInProgress=False
[7/23/2019 1:28:37 PM Diagnostic] TestDiscoveryStats.OperationStateChanged State=OperationSetStarted, InProgress=False
[7/23/2019 1:28:37 PM Diagnostic] VirtualReadOnlyTestDataStore.OperationStateChanged State=ChangeDetectionStarting, operationInProgress=False
[7/23/2019 1:28:37 PM Diagnostic] TestDiscoveryStats.OperationStateChanged State=ChangeDetectionStarting, InProgress=False
[7/23/2019 1:28:37 PM Diagnostic] We programmatically start the build in TestWindowHost.UpdateContainer... 
[7/23/2019 1:28:38 PM Diagnostic] After we await the build that programmatically started in TestWindowHost.UpdateContainer... 
[7/23/2019 1:28:38 PM Diagnostic] TestContainer update (build) complete : 860 ms
[7/23/2019 1:28:38 PM Diagnostic] Adding the Project in Project Map for Guid 09306e37-d569-49e3-8c6f-55ba222f9bba
[7/23/2019 1:28:38 PM Diagnostic] test container discoverer executor://vsprojectoutputcontainerdiscoverer/v1, discovered 1 containers
[7/23/2019 1:28:38 PM Diagnostic] Containers from 'Microsoft.VisualStudio.TestWindow.VsAdapters.VsProjectOutputContainerDiscoverer' :
[7/23/2019 1:28:38 PM Diagnostic]   C:\Work\Testing\MSUnitTestTest\MSUnitTestTest\Debug\MSUnitTestTest.exe:executor://vsprojectoutputcontainerdiscoverer/v1
[7/23/2019 1:28:38 PM Diagnostic] test container discoverer executor://testexplorerservicecontainerdiscoverer/v1, discovered 0 containers
[7/23/2019 1:28:38 PM Diagnostic] No containers found from 'Microsoft.VisualStudio.TestWindow.Extensibility.TestExplorerServiceContainerDiscoverer' :
[7/23/2019 1:28:38 PM Diagnostic] test container discoverer executor://353e8aa3-86c4-43e8-a442-164c08626369/v1, discovered 0 containers
[7/23/2019 1:28:38 PM Diagnostic] No containers found from 'Microsoft.VisualStudio.Workspace.ExternalBuildFramework.Impl.TestExplorer.BoostTestContainerDiscoverer' :
[7/23/2019 1:28:38 PM Diagnostic] test container discoverer executor://7573647c-28a2-4d17-9cc0-6eb757caba76/v1, discovered 0 containers
[7/23/2019 1:28:38 PM Diagnostic] No containers found from 'Microsoft.VisualStudio.Workspace.ExternalBuildFramework.Impl.TestExplorer.BoostVsTestContainerDiscoverer' :
[7/23/2019 1:28:38 PM Diagnostic] test container discoverer executor://ebftest/1.0, discovered 0 containers
[7/23/2019 1:28:38 PM Diagnostic] No containers found from 'Microsoft.VisualStudio.Workspace.ExternalBuildFramework.Impl.TestExplorer.ExternalBuildProjectContainerDiscoverer' :
[7/23/2019 1:28:38 PM Diagnostic] test container discoverer executor://c2caea1d-e816-46db-9e64-94c922fcd024/v1, discovered 0 containers
[7/23/2019 1:28:38 PM Diagnostic] No containers found from 'Microsoft.VisualStudio.Workspace.ExternalBuildFramework.Impl.TestExplorer.GoogleVsContainerDiscoverer' :
[7/23/2019 1:28:38 PM Diagnostic] test container discoverer executor://f225ba42-55fd-4056-b9fa-302522225610/v1, discovered 0 containers
[7/23/2019 1:28:38 PM Diagnostic] No containers found from 'Microsoft.VisualStudio.Workspace.ExternalBuildFramework.Impl.TestExplorer.GoogleVsInBoxContainerDiscoverer' :
[7/23/2019 1:28:38 PM Diagnostic] test container discoverer executor://5fa831ee-f41c-4604-8b8d-bf32d5606ca1/v1, discovered 0 containers
[7/23/2019 1:28:38 PM Diagnostic] No containers found from 'Microsoft.VisualStudio.Workspace.ExternalBuildFramework.Impl.TestExplorer.GoogleGitHubContainerDiscoverer' :
[7/23/2019 1:28:38 PM Diagnostic] test container discoverer executor://orderedtestadapter/v1, discovered 0 containers
[7/23/2019 1:28:38 PM Diagnostic] No containers found from 'Microsoft.VisualStudio.MSTest.TestWindow.OrderedTestContainerDiscoverer' :
[7/23/2019 1:28:38 PM Diagnostic] test container discoverer executor://generictestadapter/v1, discovered 0 containers
[7/23/2019 1:28:38 PM Diagnostic] No containers found from 'Microsoft.VisualStudio.MSTest.TestWindow.GenericTestContainerDiscoverer' :
[7/23/2019 1:28:38 PM Diagnostic] test container discoverer executor://webtestadapter/v1, discovered 0 containers
[7/23/2019 1:28:38 PM Diagnostic] No containers found from 'Microsoft.VisualStudio.MSTest.TestWindow.WebTestContainerDiscoverer' :
[7/23/2019 1:28:38 PM Diagnostic] DiscoveryOperation<RunAllOperation> FinishedChangedCotainers, changed container count is 0
[7/23/2019 1:28:38 PM Diagnostic] VirtualReadOnlyTestDataStore.OperationStateChanged State=ChangeDetectionFinished, operationInProgress=False
[7/23/2019 1:28:38 PM Diagnostic] TestDiscoveryStats.OperationStateChanged State=ChangeDetectionFinished, InProgress=False
[7/23/2019 1:28:38 PM Diagnostic] VirtualReadOnlyTestDataStore.OperationStateChanged State=TestExecutionStarting, operationInProgress=False
[7/23/2019 1:28:38 PM Diagnostic] TestDiscoveryStats.OperationStateChanged State=TestExecutionStarting, InProgress=False
[7/23/2019 1:28:38 PM Diagnostic] VirtualReadOnlyTestDataStore.OperationStateChanged State=TestExecutionStarted, operationInProgress=False
[7/23/2019 1:28:38 PM Informational] ------ Run test started ------
[7/23/2019 1:28:38 PM Diagnostic] TestDiscoveryStats.OperationStateChanged State=TestExecutionStarted, InProgress=False
[7/23/2019 1:28:38 PM Diagnostic] RunSettings Content:
<RunSettings>
  <RunConfiguration>
    <ResultsDirectory>C:\Work\Testing\MSUnitTestTest\MSUnitTestTest\TestResults</ResultsDirectory>
    <SolutionDirectory>C:\Work\Testing\MSUnitTestTest\MSUnitTestTest\</SolutionDirectory>
    <TargetPlatform>X86</TargetPlatform>
    <TargetFrameworkVersion>Framework45</TargetFrameworkVersion>
  </RunConfiguration>
</RunSettings>
[7/23/2019 1:28:38 PM Diagnostic] Value of UseSpecifiedAdapterLocations as specified in Tools -> Options: True
[7/23/2019 1:28:38 PM Diagnostic] Adapter location settings being used after evaluation: UseSpecifiedAdapterLocations = False, SkipDefaultAdapters = False, AreAllTestContainersCSharpOrVBProjectsOnly = False
[7/23/2019 1:28:38 PM Diagnostic] Final RunSettings for the current TestRunCriteria:
<RunSettings>
  <RunConfiguration>
    <ResultsDirectory>C:\Work\Testing\MSUnitTestTest\MSUnitTestTest\TestResults</ResultsDirectory>
    <SolutionDirectory>C:\Work\Testing\MSUnitTestTest\MSUnitTestTest\</SolutionDirectory>
    <TargetPlatform>X86</TargetPlatform>
    <TargetFrameworkVersion>Framework40</TargetFrameworkVersion>
    <CollectSourceInformation>True</CollectSourceInformation>
  </RunConfiguration>
</RunSettings>
[7/23/2019 1:28:40 PM Error] Exception Code: C0000005
    at ModuleCleanup() in C:\Work\Testing\MSUnitTestTest\MSUnitTestTest\MyTests.cpp:line 17
[7/23/2019 1:28:40 PM Diagnostic] VirtualReadOnlyTestDataStore.OperationStateChanged State=OperationSetFinished, operationInProgress=False
[7/23/2019 1:28:40 PM Diagnostic] TestDiscoveryStats.OperationStateChanged State=OperationSetFinished, InProgress=False
[7/23/2019 1:28:40 PM Diagnostic] ***    Run finished using 'InMemoryUnitTestWriter' ***
[7/23/2019 1:28:40 PM Informational] ========== Run test finished: 2 run (0:00:01.9539482) ==========
[7/23/2019 1:28:40 PM Diagnostic] VirtualReadOnlyTestDataStore.OperationStateChanged State=TestExecutionFinished, operationInProgress=False
[7/23/2019 1:28:40 PM Diagnostic] TestDiscoveryStats.OperationStateChanged State=TestExecutionFinished, InProgress=False

10) 由于崩溃似乎发生在 Logger::WriteMessage 中,因此我注释掉了对 Logger::WriteMessage 的所有调用并再次尝试。仍然崩溃,这次是在调用 IsDebuggerAttached 的 TestClassImpl::CrtHandlersSetter 中。日志包含:

[7/23/2019 2:16:28 PM Diagnostic] About to Enqueue operation 'RunAllOperation', hashcode:66314243 
[7/23/2019 2:16:28 PM Diagnostic] Enqueue operation 'RunAllOperation', hashcode:66314243 
[7/23/2019 2:16:28 PM Diagnostic] Operation left in the the queue: 1
[7/23/2019 2:16:28 PM Diagnostic]   'RunAllOperation', hashcode:66314243
[7/23/2019 2:16:28 PM Diagnostic] 

[7/23/2019 2:16:28 PM Diagnostic] Processing Queue .....
[7/23/2019 2:16:28 PM Diagnostic] Operation Dequeue : 'RunAllOperation'
[7/23/2019 2:16:28 PM Diagnostic] VirtualReadOnlyTestDataStore.OperationStateChanged State=OperationSetStarted, operationInProgress=False
[7/23/2019 2:16:28 PM Diagnostic] TestDiscoveryStats.OperationStateChanged State=OperationSetStarted, InProgress=False
[7/23/2019 2:16:28 PM Diagnostic] VirtualReadOnlyTestDataStore.OperationStateChanged State=ChangeDetectionStarting, operationInProgress=False
[7/23/2019 2:16:28 PM Diagnostic] TestDiscoveryStats.OperationStateChanged State=ChangeDetectionStarting, InProgress=False
[7/23/2019 2:16:28 PM Diagnostic] We programmatically start the build in TestWindowHost.UpdateContainer... 
[7/23/2019 2:16:28 PM Diagnostic] After we await the build that programmatically started in TestWindowHost.UpdateContainer... 
[7/23/2019 2:16:28 PM Diagnostic] TestContainer update (build) complete : 542 ms
[7/23/2019 2:16:28 PM Diagnostic] Adding the Project in Project Map for Guid 09306e37-d569-49e3-8c6f-55ba222f9bba
[7/23/2019 2:16:28 PM Diagnostic] test container discoverer executor://vsprojectoutputcontainerdiscoverer/v1, discovered 1 containers
[7/23/2019 2:16:28 PM Diagnostic] Containers from 'Microsoft.VisualStudio.TestWindow.VsAdapters.VsProjectOutputContainerDiscoverer' :
[7/23/2019 2:16:28 PM Diagnostic]   C:\Work\Testing\MSUnitTestTest\MSUnitTestTest\Debug\MSUnitTestTest.exe:executor://vsprojectoutputcontainerdiscoverer/v1
[7/23/2019 2:16:28 PM Diagnostic] test container discoverer executor://testexplorerservicecontainerdiscoverer/v1, discovered 0 containers
[7/23/2019 2:16:28 PM Diagnostic] No containers found from 'Microsoft.VisualStudio.TestWindow.Extensibility.TestExplorerServiceContainerDiscoverer' :
[7/23/2019 2:16:28 PM Diagnostic] test container discoverer executor://66783bf0-ccb1-4169-8acc-0ab56235af80/v1, discovered 0 containers
[7/23/2019 2:16:28 PM Diagnostic] No containers found from 'Microsoft.VisualStudio.Workspace.ExternalBuildFramework.Impl.TestExplorer.BoostTestContainerDiscoverer' :
[7/23/2019 2:16:28 PM Diagnostic] test container discoverer executor://fdfb8d12-5f69-4cba-a2f3-e104d80b7f94/v1, discovered 0 containers
[7/23/2019 2:16:28 PM Diagnostic] No containers found from 'Microsoft.VisualStudio.Workspace.ExternalBuildFramework.Impl.TestExplorer.BoostVsTestContainerDiscoverer' :
[7/23/2019 2:16:28 PM Diagnostic] test container discoverer executor://ebftest/1.0, discovered 0 containers
[7/23/2019 2:16:28 PM Diagnostic] No containers found from 'Microsoft.VisualStudio.Workspace.ExternalBuildFramework.Impl.TestExplorer.ExternalBuildProjectContainerDiscoverer' :
[7/23/2019 2:16:28 PM Diagnostic] test container discoverer executor://7ebc7e50-a310-497b-a268-0a992b204497/v1, discovered 0 containers
[7/23/2019 2:16:28 PM Diagnostic] No containers found from 'Microsoft.VisualStudio.Workspace.ExternalBuildFramework.Impl.TestExplorer.GoogleVsContainerDiscoverer' :
[7/23/2019 2:16:28 PM Diagnostic] test container discoverer executor://9bb99e40-f237-4b21-b326-205ddf200b69/v1, discovered 0 containers
[7/23/2019 2:16:28 PM Diagnostic] No containers found from 'Microsoft.VisualStudio.Workspace.ExternalBuildFramework.Impl.TestExplorer.GoogleVsInBoxContainerDiscoverer' :
[7/23/2019 2:16:28 PM Diagnostic] test container discoverer executor://0fbbb65f-8d69-4bdd-9617-417d847e3a88/v1, discovered 0 containers
[7/23/2019 2:16:28 PM Diagnostic] No containers found from 'Microsoft.VisualStudio.Workspace.ExternalBuildFramework.Impl.TestExplorer.GoogleGitHubContainerDiscoverer' :
[7/23/2019 2:16:28 PM Diagnostic] test container discoverer executor://orderedtestadapter/v1, discovered 0 containers
[7/23/2019 2:16:28 PM Diagnostic] No containers found from 'Microsoft.VisualStudio.MSTest.TestWindow.OrderedTestContainerDiscoverer' :
[7/23/2019 2:16:28 PM Diagnostic] test container discoverer executor://generictestadapter/v1, discovered 0 containers
[7/23/2019 2:16:28 PM Diagnostic] No containers found from 'Microsoft.VisualStudio.MSTest.TestWindow.GenericTestContainerDiscoverer' :
[7/23/2019 2:16:28 PM Diagnostic] test container discoverer executor://webtestadapter/v1, discovered 0 containers
[7/23/2019 2:16:28 PM Diagnostic] No containers found from 'Microsoft.VisualStudio.MSTest.TestWindow.WebTestContainerDiscoverer' :
[7/23/2019 2:16:28 PM Diagnostic] DiscoveryOperation<RunAllOperation> FinishedChangedCotainers, changed container count is 0
[7/23/2019 2:16:28 PM Diagnostic] VirtualReadOnlyTestDataStore.OperationStateChanged State=ChangeDetectionFinished, operationInProgress=False
[7/23/2019 2:16:28 PM Diagnostic] TestDiscoveryStats.OperationStateChanged State=ChangeDetectionFinished, InProgress=False
[7/23/2019 2:16:28 PM Diagnostic] VirtualReadOnlyTestDataStore.OperationStateChanged State=TestExecutionStarting, operationInProgress=False
[7/23/2019 2:16:28 PM Diagnostic] TestDiscoveryStats.OperationStateChanged State=TestExecutionStarting, InProgress=False
[7/23/2019 2:16:28 PM Informational] ------ Run test started ------
[7/23/2019 2:16:28 PM Diagnostic] VirtualReadOnlyTestDataStore.OperationStateChanged State=TestExecutionStarted, operationInProgress=False
[7/23/2019 2:16:28 PM Diagnostic] TestDiscoveryStats.OperationStateChanged State=TestExecutionStarted, InProgress=False
[7/23/2019 2:16:28 PM Diagnostic] RunSettings Content:
<RunSettings>
  <RunConfiguration>
    <ResultsDirectory>C:\Work\Testing\MSUnitTestTest\MSUnitTestTest\TestResults</ResultsDirectory>
    <SolutionDirectory>C:\Work\Testing\MSUnitTestTest\MSUnitTestTest\</SolutionDirectory>
    <TargetPlatform>X86</TargetPlatform>
    <TargetFrameworkVersion>Framework45</TargetFrameworkVersion>
  </RunConfiguration>
</RunSettings>
[7/23/2019 2:16:28 PM Diagnostic] Value of UseSpecifiedAdapterLocations as specified in Tools -> Options: True
[7/23/2019 2:16:28 PM Diagnostic] Adapter location settings being used after evaluation: UseSpecifiedAdapterLocations = False, SkipDefaultAdapters = False, AreAllTestContainersCSharpOrVBProjectsOnly = False
[7/23/2019 2:16:29 PM Diagnostic] Final RunSettings for the current TestRunCriteria:
<RunSettings>
  <RunConfiguration>
    <ResultsDirectory>C:\Work\Testing\MSUnitTestTest\MSUnitTestTest\TestResults</ResultsDirectory>
    <SolutionDirectory>C:\Work\Testing\MSUnitTestTest\MSUnitTestTest\</SolutionDirectory>
    <TargetPlatform>X86</TargetPlatform>
    <TargetFrameworkVersion>Framework40</TargetFrameworkVersion>
    <CollectSourceInformation>True</CollectSourceInformation>
  </RunConfiguration>
</RunSettings>
[7/23/2019 2:16:34 PM Diagnostic] VirtualReadOnlyTestDataStore.OperationStateChanged State=OperationSetFinished, operationInProgress=False
[7/23/2019 2:16:34 PM Diagnostic] TestDiscoveryStats.OperationStateChanged State=OperationSetFinished, InProgress=False
[7/23/2019 2:16:34 PM Error] The active test run was aborted. Reason: Test host process crashed : Process is terminated due to ***Exception.

[7/23/2019 2:16:34 PM Diagnostic] Cancel requested, actions left in queue 2, exiting...
[7/23/2019 2:16:34 PM Diagnostic] VirtualReadOnlyTestDataStore.OperationStateChanged State=TestExecutionCanceling, operationInProgress=False
[7/23/2019 2:16:34 PM Diagnostic] TestDiscoveryStats.OperationStateChanged State=TestExecutionCanceling, InProgress=False
[7/23/2019 2:16:34 PM Diagnostic] ***    Run finished using 'InMemoryUnitTestWriter' ***
[7/23/2019 2:16:34 PM Informational] ========== Run test finished: 0 run (0:00:05.9716557) ==========
[7/23/2019 2:16:34 PM Diagnostic] VirtualReadOnlyTestDataStore.OperationStateChanged State=TestExecutionCancelAndFinished, operationInProgress=False
[7/23/2019 2:16:34 PM Diagnostic] TestDiscoveryStats.OperationStateChanged State=TestExecutionCancelAndFinished, InProgress=False

我在这方面花了很多时间以各种排列方式。我真的更喜欢将测试代码保留在主项目中,因为这是一个遗留应用程序,我正在尝试在单独的测试项目中执行包含/链接器地狱。如果我必须这样做,我会这样做,但微软表示他们支持将测试保留在 exe 的项目中。

我并不真正关心使用 MSTest 与 Google Test,我只是想要一些有用的东西,这样我就可以开始实际的测试编写了。

救命!

【问题讨论】:

保持最新状态。 Microsoft 同意这是 Visual Studio 中的一个错误。他们说他们正在努力。 你有没有可能找到那个错误的链接?我遇到了一些非常相似的事情,想相互参考 如果您的意思是指向有关该错误的微软页面的链接,不,我不知道。我刚刚收到了来自与他们一起打开的支持案例的电子邮件。他们的解决方法是将应用程序更改为构建为 DLL 而不是 exe。这使测试成功运行。这不是我真正想要的,但对我们来说已经足够近了,我已经准备好继续做其他事情了。 感谢您的跟进。我实际上也在做同样的事情。 【参考方案1】:

Microsoft 建议的解决方法是将项目从 exe 更改为 dll,此时测试工作正常。作为临时解决方法,这对我有用。

我已经使用#ifdef _WINDLL 宏来识别我们是在构建 exe 还是 dll,并根据需要隐藏测试代码。

希望他们在未来的 Visual Studio 更新中为 exe 修复此问题。

【讨论】:

以上是关于Visual C++ 测试开箱即用项目中的错误的主要内容,如果未能解决你的问题,请参考以下文章

Visual C++ 中的 C++ 代码库打开错误

流明无法开箱即用

Visual Studio 2008 中的非托管 C++ 单元测试

创建一个开箱即用的可移植、跨平台、开源 C++ GUI 应用程序?

Visual Studio 2008 中的 C# 项目中的 C++ 项目参考

Visual C++ 2008 提升问题