Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 有可能在tfs构建上运行karma吗?_Angularjs_Visual Studio 2012_Tfs_Jasmine_Karma Runner - Fatal编程技术网

Angularjs 有可能在tfs构建上运行karma吗?

Angularjs 有可能在tfs构建上运行karma吗?,angularjs,visual-studio-2012,tfs,jasmine,karma-runner,Angularjs,Visual Studio 2012,Tfs,Jasmine,Karma Runner,我正在使用TFS2010和VisualStudio2012。现在我想对AngularJs脚本进行单元测试。在Visual Studio中,这似乎可以使用,但如何在tfs build上运行测试?假设tfs build可以调用外部程序,您可以执行karma run。但是,您必须在karma配置中设置singleRun:true。对于自动构建,您可以使用以下nuget包,该包将使用karma和grunt运行jasmine测试。因此,只要在构建机器上安装了nodejs,它就应该运行单元测试 谢谢我对此

我正在使用TFS2010和VisualStudio2012。现在我想对AngularJs脚本进行单元测试。在Visual Studio中,这似乎可以使用,但如何在tfs build上运行测试?

假设tfs build可以调用外部程序,您可以执行
karma run
。但是,您必须在karma配置中设置
singleRun:true

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


谢谢

我对此进行了一段时间的研究,并找到了一些解决方案。有些人建议你们使用Chutzpah,这实际上并不坏,但若你们的项目很大,它可能会变得太复杂和复杂。此外,如果你使用业力模板,你会遇到一些麻烦,因为Chutzpah找不到模块并抛出错误

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

中间一步是运行Angular单元测试的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配置文件

祝你好运! :)