2

Jenkins Job DSL插件是一种在 repo 中存储 CI 配置并在分支之间改变它的非常好的方法。

问题是 - 是否有一种自然或接近自然的方式来运行 MSTest 测试、解析结果并显示它们。

现在我做了一个 powershell 调用,但它只给了我日志,而不是 UI 集成。

def testSomeProjectJob =  job(testSomeProjectJobName) {
    steps { 
      powerShell("& ${vstest} '${root}/SomeProject/SomeProject.Tests/bin/Debug/SomeProject.Tests.dll' ")
    }
}

可能有发布者或模板技巧,或者为此编写 JOB DSL 插件的一些技巧


UPD:MSTest 和 VSTest 的最终脚本模板,使用@daspilker answer、jenkins xUnit PluginarchiveXUnit

  job('RunTests') {
      steps {
           // VSTEST
           powerShell("& ${vstest} 'path/to/Tests.dll' /logger:trx ")
           // Or MSBUILD
            powerShell("& ${msbuild} /testcontainer:'path/to/Tests.dll' ")
      }
      publishers {
        archiveXUnit {
          msTest {
            pattern('**/*.trx')
            // deleteOutputFiles()
          }
        }
      }
    }
4

2 回答 2

5

使用 PowerShell 步骤是一个好的开始。安装xUnit 插件以解析和显示结果。它可以解析包括 MSTest 在内的各种测试结果。您可以使用DSL来配置插件。

例子:

job('example') {
  steps {
    powerShell('...')
  }
  publishers {
    archiveXUnit {
      msTest {
        pattern('path/to/test/results')
      }
    }
  }
}
于 2016-01-08T19:27:13.317 回答
2

它用于 VSTest,但我最终必须使用配置块才能在 DSL 作业中使用它。

static Closure useVsTest(List<String> dlls) { return { it / 'builders' << 'org.jenkinsci.plugins.vstest__runner.VsTestBuilder' { vsTestName 'VS 14.0' testFiles dlls.join('\n') settings '' testCaseFilter '' enablecodecoverage false useVsixExtensions true platform 'x86' otherPlatform '' framework 'framework45' otherFramework '' logger 'trx' otherLogger '' cmdLineArgs '/TestAdapterPath:"."' failBuild true } } }

于 2016-06-16T17:57:02.940 回答