是否有可能在tfs构建上运行业力?

时间:2014-04-28 07:24:57

标签: angularjs visual-studio-2012 tfs jasmine karma-runner

我正在使用TFS 2010和Visual Studio 2012.现在我想对AngularJs-Scripts进行单元测试。在Visual Studio中,这似乎与KarmaVs一起使用,但是如何在tfs-build上运行测试?

3 个答案:

答案 0 :(得分:1)

假设tfs-build可以调用外部程序,您只需执行karma run即可。你必须在你的业力配置中设置singleRun:true

答案 1 :(得分:1)

对于自动构建,您可以使用以下nuget包,它将使用karma和grunt运行您的jasmine测试。因此,只要您在构建计算机上安装了nodejs,就应该运行单元测试。

https://www.nuget.org/packages/KarmaGruntJSUnit.MSBuild/

由于

答案 2 :(得分:0)

我已经研究了一段时间并找到了一些解决方案。有人提到你使用Chutzpah,这实际上并不差,但如果你的项目很大,可能会变得过于复杂和参与。此外,如果您使用Karma模板,您将遇到一些麻烦,因为Chutzpah无法找到模块并抛出错误。

通过TFS中的CI构建运行测试的最简单方法是在构建过程中添加powershell脚本。我们正在使用TFS 2015

TFS portal

中间步骤是运行Angular Unit Tests的PowerShell脚本。脚本如下所示:

$ERRORTEXT = "FAILED"
$FILE = "karmaTest.log"
$TOTALFAIL = 0
$TESTFILES = ""
$TESTRESULT = ""
$EXITCODE = 0


node ../node/node_modules/karma/bin/karma start  "../Bp.Cdn/nodeConfig/karma.all.conf.js" --auto-watch false --single-run true > $FILE


$lines = Get-Content $FILE
foreach ($line in $lines) {
    If ($line | Select-String -Pattern $ERRORTEXT) { # FAIL SCENARIO
        $TESTRESULT = " FAILED "
        $TOTALFAIL = $TOTALFAIL + 1
    } 
    Else { # PASS SCENARIO
        $TESTRESULT = " PASSED "
    }
    $TESTFILES = $TESTFILES + " " + $TESTRESULT + " :  " + $line + "`r`n"
}

# We can delete the log file now
Remove-Item $FILE


If ($TOTALFAIL -eq 0) { # PASS SCENARIO
    Write-Host ("All Angular tests PASSED!")
    Write-Host ($TESTFILES)
    Write-Host ("Failed files: $TOTALFAIL")
    Write-Host ("All Angular tests PASSED!")  ### This line is here for clarity only when viewing the build console
} Else { #FAIL SCENARIO
    Write-Host ("One or more Angular tests failed, please correct before re-trying another build: `r`n`r`n")
    Write-Host ($TESTFILES)
    Write-Host ("Failed files: $TOTALFAIL")
    Write-Error ("One or more Angular tests failed, please correct before re-trying another build: `r`n`r`n")  ### DO NOT REMOVE THIS LINE
}

EXIT

我们有一个批处理文件,它调用我们的Karma测试,并将autoWatch设置为true,我们在开发时使用,现在同样的调用来自powershell脚本,传递了autowatch和singlerun参数。现在两者都工作并使用相同的Karma配置文件。

祝你好运! :)