Azure devops Azure管道Google测试未作为.EXE运行 我将传统的C++代码库构建转换为Azure DeVoP流水线。我们在一个名为“sdktests.exe”的可执行文件模块中有一系列gtest单元测试。它链接到gtest 1.8.1。用户总是手动运行此exe并观察结果

Azure devops Azure管道Google测试未作为.EXE运行 我将传统的C++代码库构建转换为Azure DeVoP流水线。我们在一个名为“sdktests.exe”的可执行文件模块中有一系列gtest单元测试。它链接到gtest 1.8.1。用户总是手动运行此exe并观察结果,azure-devops,azure-pipelines,googletest,Azure Devops,Azure Pipelines,Googletest,但我似乎无法让Azure Devops检测并运行这些测试。我猜它需要以DLL的形式加载测试,而不是EXE 是这样吗?我是否需要将google测试模块从EXE转换为DLL才能正常工作? 这是我的yaml管道步骤 - task: VSTest@2 inputs: platform: '$(buildPlatform)' configuration: '$(buildConfiguration)' testSelector: 'testAssemblies' tes

但我似乎无法让Azure Devops检测并运行这些测试。我猜它需要以DLL的形式加载测试,而不是EXE

是这样吗?我是否需要将google测试模块从EXE转换为DLL才能正常工作?

这是我的yaml管道步骤

- task: VSTest@2
  inputs:
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'
    testSelector: 'testAssemblies'
    testAssemblyVer2: '**\*sdktests*.exe'
这是步骤的my Azure生成输出:

Source filter: **\*sdktests*.exe
SystemVssConnection exists true
d:\a\_tasks\VSTest_ef087383-ee5e-42c7-9a53-ab56c98420f9\2.170.1\Modules\DTAExecutionHost.exe --inputFile d:\a\_temp\input_484b64d0-c544-11ea-bc95-251e50750ee7.json
======================================================
##########################################################################
DtaExecutionHost version 18.170.30112.1.
Starting TestExecution Model...
Result Attachments will be stored in LogStore
Run Attachments will be stored in LogStore
Result Attachments will be stored in LogStore
Result Attachments will be stored in LogStore
Run Attachments will be stored in LogStore
Updated Run Settings:
<RunSettings>
  <RunConfiguration>
    <BatchSize>1000</BatchSize>
    <ResultsDirectory>d:\a\_temp\TestResults</ResultsDirectory>
  </RunConfiguration>
</RunSettings>
**************** Starting test execution *********************
C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Extensions\TestPlatform\vstest.console.exe "@d:\a\_temp\jcgckxlo13t.tmp"
Microsoft (R) Test Execution Command Line Tool Version 16.6.0
Copyright (c) Microsoft Corporation.  All rights reserved.
vstest.console.exe "d:\a\1\s\x64\Release\sdktests.exe"
/Settings:"d:\a\_temp\ktasri4fewz.tmp.runsettings"
/Logger:"trx"
/TestAdapterPath:"d:\a\1\s"
Starting test execution, please wait...
A total of 1 test files matched the specified pattern.
No test is available in d:\a\1\s\x64\Release\sdktests.exe. Make sure that test discoverer & executors are registered and platform & framework version settings are appropriate and try again.
源代码筛选器:*\*sdktests*.exe
SystemVssConnection存在true
d:\a\\u tasks\VSTest\u ef087383-ee5e-42c7-9a53-ab56c98420f9\2.170.1\Modules\DTAExecutionHost.exe--输入文件d:\a\\u temp\input\u 484b64d0-c544-11ea-bc95-251e50750ee7.json
======================================================
##########################################################################
DTAEExecutionHost版本18.170.30112.1。
正在启动TestExecution模型。。。
结果附件将存储在LogStore中
运行附件将存储在LogStore中
结果附件将存储在LogStore中
结果附件将存储在LogStore中
运行附件将存储在LogStore中
更新的运行设置:
1000
d:\a\\u temp\TestResults
****************开始测试执行*********************
C:\Program Files(x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Extensions\TestPlatform\vstest.console.exe“@d:\a\\U temp\jcgckxlo13t.tmp”
Microsoft(R)测试执行命令行工具版本16.6.0
版权所有(c)微软公司。版权所有。
vstest.console.exe“d:\a\1\s\x64\Release\sdktests.exe”
/设置:“d:\a\\u temp\ktasri4fewz.tmp.runsettings”
/记录器:“trx”
/TestAdapterPath:“d:\a\1\s”
正在启动测试执行,请稍候。。。
总共有1个测试文件与指定的模式匹配。
d:\a\1\s\x64\Release\sdktests.exe中没有可用的测试。请确保已注册测试发现者和执行者,并且平台和框架版本设置适当,然后重试。
@Joe

我过去也遇到过类似的情况。这是我发现的。如果您正在运行GTest,您应该像平常一样运行,不需要执行VSTest任务。GTest生成的测试结果文件位于JUnit格式的XML文件中。您可以使用发布测试结果v2任务发布到生成。设置将类似于:

- task: CmdLine@1
  displayName: Run Unit Tests (GTest)
  inputs:
    script: 'sdktests.exe'

- task: PublishTestResults@2
  displayName: Publish Unit Test Results (GTest)
  inputs:
    testResultsFiles: '**/SDKTestResults.xml'
    testRunTitle: 'GTest Results'
以下是创建满足您需求的解决方案时应使用的参考资料:

    • @Joe

      我过去也遇到过类似的情况。这是我发现的。如果您正在运行GTest,您应该像平常一样运行,不需要执行VSTest任务。GTest生成的测试结果文件位于JUnit格式的XML文件中。您可以使用发布测试结果v2任务发布到生成。设置将类似于:

      - task: CmdLine@1
        displayName: Run Unit Tests (GTest)
        inputs:
          script: 'sdktests.exe'
      
      - task: PublishTestResults@2
        displayName: Publish Unit Test Results (GTest)
        inputs:
          testResultsFiles: '**/SDKTestResults.xml'
          testRunTitle: 'GTest Results'
      
      以下是创建满足您需求的解决方案时应使用的参考资料:


      您需要使用受支持的测试框架和测试适配器。到目前为止,您做了哪些研究?我知道我需要使用受支持的测试框架和适配器。我发现有很多讨论。但我不是问“如何让google测试在Azure Devops上构建我的测试”,我是问我的测试是否需要以DLL的形式进行。我找不到一个明确的答案,只是一些例子。你需要使用一个受支持的测试框架和测试适配器。到目前为止,您做了哪些研究?我知道我需要使用受支持的测试框架和适配器。我发现有很多讨论。但我不是问“如何让google测试在Azure Devops上构建我的测试”,我是问我的测试是否需要以DLL的形式进行。我找不到一个明确的答案,只是一些例子。哇,这似乎好多了。我想我的目标是this@Joe-是的,我实际上尝试了与你最初相同的方法,但无法使其正常工作。我在乙醚中的某个地方找到了一篇关于如何使用PublishTestRestuls@2任务我在我的管道中实现了这一点,并取得了成功。工作起来像个冠军。好极了。谢谢哇,看起来好多了。我想我的目标是this@Joe-是的,我实际上尝试了与你最初相同的方法,但无法使其正常工作。我在乙醚中的某个地方找到了一篇关于如何使用PublishTestRestuls@2任务我在我的管道中实现了这一点,并取得了成功。工作起来像个冠军。好极了。谢谢