我们有一个大型解决方案,其中包含Karma和Jasmine Tests的不同项目。 我们正在使用Jenkins for CI,我们只想运行Karma execute命令一次。含义:我们不想一个一个地注册每个项目的路径。 有什么方法可以通过单个命令运行所有测试用例吗?
我的想法是: 创建一个MainTests项目,并从MainTests项目的karma.conf.js文件内的其他项目的karma.conf.js文件的files []数组中引用所有js / spec文件,然后使用Jenkins仅运行MainTests项目。
请参见下面的屏幕截图
同样是普通的JS,我们没有使用Angular / AngularJS
请提出适当的解决方案,我将感激不尽!
答案 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
}
}