首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Msbuild忽略构建错误

Msbuild忽略构建错误
EN

Stack Overflow用户
提问于 2018-11-21 10:22:03
回答 1查看 1.5K关注 0票数 0

上下文

我有一个任务集成、测试和代码覆盖,在jenkins管道中执行。

使用的工具是、dotcover、Nunit

当配置为Integration时,在集成测试构建过程中通过dotcover执行Nunit。

问题

当我在visual studio中执行配置集成( configuration )时,有一些测试出现错误,那么构建失败,一切正常,但是当使用msbuild执行相同的配置时,它不会返回任何错误代码,然后Jenkins管线不会失败。

这种情况使我们陷入了微妙的境地,因为我们再也不能相信我们的建设管道了。

我在网上找了几天的解决方案,但我仍然在谈同样的问题,这就是为什么我在这里寻求你的帮助。

谢谢你的帮助。

文件

詹金斯档案

代码语言:javascript
运行
复制
node('BUILD_PROJECT') {
    stage ('Checkout')
    {
        checkout scm
    }

    stage ('Build')
    {
        bat '"C:/Program Files (x86)/NuGet/nuget.exe" restore -NonInteractive MySolution.sln'
        bat "\"C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/MSBuild/15.0/Bin/MSBuild.exe\" /p:Configuration=Release;AssemblyVersion=0.1.0.${env.BUILD_NUMBER} /maxcpucount:8 MySolution.sln"
    }

    stage ('Integration')
    {
        bat "\"C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/MSBuild/15.0/Bin/MSBuild.exe\" /p:Configuration=Integration /maxcpucount:8 MySolution.sln"
    }

    stage ('Publish Coverage')
    {
         publishHTML target: [
            allowMissing: false,
            alwaysLinkToLastBuild: false,
            keepAll: true,
            reportDir: 'Solution/IntegrationProject/bin/Integration/TestResult',
            reportFiles: 'ProjectCoverageReport.html',
            reportName: 'Project Coverage Report'
          ]
    }

    stage ('Setup')
    {
    bat "\"C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/MSBuild/15.0/Bin/MSBuild.exe\" /p:Configuration=Setup;Platform=x86;AssemblyVersion=0.1.0.${env.BUILD_NUMBER} /maxcpucount:8 MySolution.sln"
    }

    stage ('Archive')
    {
        archiveArtifacts artifacts: 'Solution/SetupProject/bin/x86/Setup/MySetup.exe'
    }
}

在IntegrationProject.csproj中

代码语言:javascript
运行
复制
<Target Name="CoverageReport" AfterTargets="CopySqlFiles" Condition="$(Configuration) == Integration">
    <Exec Command="..\packages\JetBrains.dotCover.CommandLineTools.2018.1.3\tools\dotCover.exe analyse /TargetExecutable=..\packages\NUnit.ConsoleRunner.3.8.0\tools\nunit3-console.exe /ReturnTargetExitCode /TargetArguments=&quot;$(TargetPath)&quot; /Filters=-:nunit.framework;-:IntegrationProjectTest;-:type=MyNamespace.View.*;-:type=*Test /TargetWorkingDir=$(TargetDir) /Output=$(TargetDir)\TestResult\MyCoverageReport.html /ReportType=HTML" />
</Target>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-21 15:35:04

您应该能够使用dotcover参数ReturnTargetExitCode从nunit获得返回代码。

代码语言:javascript
运行
复制
<Target Name="CoverageReport" AfterTargets="CopySqlFiles" Condition="$(Configuration) == Integration">
    <Exec Command="..\packages\JetBrains.dotCover.CommandLineTools.2018.1.3\tools\dotCover.exe analyse ^
        /TargetExecutable=..\packages\NUnit.ConsoleRunner.3.8.0\tools\nunit3-console.exe ^
        /ReturnTargetExitCode ^
        /TargetArguments=&quot;$(TargetPath)&quot; ^
        /Filters=-:nunit.framework;-:IntegrationProjectTest;-:type=MyNamespace.View.*;-:type=*Test ^
        /TargetWorkingDir=$(TargetDir) ^
        /Output=$(TargetDir)\TestResult\MyCoverageReport.html ^
        /ReportType=HTML
        /ReturnTargetExitCode">
      <Output TaskParameter="ExitCode" PropertyName="DotCoverExitCode" />
    </Exec>

    <Message Text="Unit Tests Failed!" Condition="$(DotCoverExitCode) != '0'"/>  

</Target>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53409914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档