如何在一个解决方案中运行多个Karma&Jasmine项目(需要Jenkins集成)?

时间:2018-08-06 11:01:30

标签: javascript angular jenkins angular-cli karma-jasmine

我们有一个大型解决方案,其中包含Karma和Jasmine Tests的不同项目。 我们正在使用Jenkins for CI,我们只想运行Karma execute命令一次。含义:我们不想一个一个地注册每个项目的路径。 有什么方法可以通过单个命令运行所有测试用例吗?


我的想法是: 创建一个MainTests项目,并从MainTests项目的karma.conf.js文件内的其他项目的karma.conf.js文件的files []数组中引用所有js / spec文件,然后使用Jenkins仅运行MainTests项目。

请参见下面的屏幕截图


同样是普通的JS,我们没有使用Angular / AngularJS

请提出适当的解决方案,我将感激不尽!

enter image description here

2 个答案:

答案 0 :(得分:0)

暂时

我创建了Windows批处理命令以查找所有业力解决方案并运行NPM安装 和业力开始

它为我工作。

请参见下面的批处理命令:

@Echo off

Echo Searching for new karma.conf.js files...

FOR /R "%WORKSPACE%" %%F IN (.) DO (

ECHO Node module found!

    Echo inside %%F 

IF EXIST "%%F\karma.conf.js" (

   ECHO "File exist here. 

   cd %%F

 Echo %%F | FINDSTR /C:"node" >Installing node packages" nul & IF ERRORLEVEL 1 (

Echo Installing node packages"

npm install

.\node_modules\.bin\karma start --reporters html

) else (ECHO CASE FALSE)

) ELSE (
   ECHO "File not exist") 
)

答案 1 :(得分:0)

一次运行所有解决方案Angular CLI和Karma CLI

$testProjects = Get-ChildItem -Path $env:WORKSPACE -Filter "karma.conf.js" -Recurse | ForEach-Object FullName | Select-String -notmatch "node_modules"

foreach ($project in $testProjects)
{
$project = $project -replace "karma.conf.js",""


Set-Location -Path $project
npm install


if(Test-Path $project".angular-cli.json")
{
Write-Host "***** angular cli project *****"
Write-Host "File path : "$project
.\node_modules\.bin\ng test -code-coverage

}
else{
Write-Host "***** karma cli project *****"
.\node_modules\.bin\karma start --reporters html

$reportName = "report.html"

$leafName = Split-Path $project -leaf
$newReportName = $leafName + ".html"
Rename-Item $reportName $newReportName

Copy-Item -Path $newReportName -Destination C:\

Remove-Item $newReportName
}

}