Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/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
使用dotCover命令行的IIS代码覆盖率_Iis_Teamcity_Code Coverage_Iis Express_Dotcover - Fatal编程技术网

使用dotCover命令行的IIS代码覆盖率

使用dotCover命令行的IIS代码覆盖率,iis,teamcity,code-coverage,iis-express,dotcover,Iis,Teamcity,Code Coverage,Iis Express,Dotcover,JetBrains集成到ReSharper Ultimate中的dotCover客户端工具包括一个选项,用于获取在IIS下运行的应用程序(例如ASP.NET MVC应用程序)的代码覆盖率 JetBrains的TeamCity持续集成系统包括集成到其中的免费命令行版本的dotCover。vstestrunner可以很好地使用dotCover为单元测试生成代码覆盖率。但是,它不会生成在IIS下运行的代码的任何代码覆盖率,例如使用SeleniumWebDriver之类的集成测试 是否有办法使用Team

JetBrains集成到ReSharper Ultimate中的dotCover客户端工具包括一个选项,用于获取在IIS下运行的应用程序(例如ASP.NET MVC应用程序)的代码覆盖率

JetBrains的TeamCity持续集成系统包括集成到其中的免费命令行版本的dotCover。vstestrunner可以很好地使用dotCover为单元测试生成代码覆盖率。但是,它不会生成在IIS下运行的代码的任何代码覆盖率,例如使用SeleniumWebDriver之类的集成测试


是否有办法使用TeamCity中的dotCover命令行工具获取在IIS下运行的应用程序的代码覆盖率?

如dotCover问题跟踪程序中所述,使用dotCover命令行的IIS代码覆盖率尚未实现

然而,使用来自的提示,我能够创建一个Powershell脚本,它可以生成应用程序的代码覆盖率。这使用的是iisexpress,而不是IIS,这并不理想,但目前已经足够接近了

我已经将我的脚本发布在这里,以防它对其他人有用

#此脚本运行我们基于web的测试,通过TeamCity的
#dotCover,然后运行测试(也在dotCover中),然后导入
#测试结果和覆盖率结果返回TeamCity。
#请注意,以下部分内容基于Tony Fabris对
#2016年1月20日从这里开始:https://youtrack.jetbrains.com/issue/DCVR-5921
#配置。
#IIS Express的路径。
$IISExpressPath=“C:\ProgramFiles(x86)\IIS Express\IISExpress.exe”
#dotCover的路径,用于.NET代码覆盖的TeamCity工具。
$DotCoverPath=“C:\TeamCity\buildAgent\tools\dotCover\dotCover.exe”
#VSTest控制台的路径。
$VSTestConsolePath=“C:\Program Files(x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe”
#PSExec的路径。
$PSExecPath=“C:\path\to\PSTools\PSExec.exe”
#将托管在IIS express中的网站的路径。
$WebsitePath=“C:\path\to\webapp”
#承载网站的端口。
$WebsitePort=12345
#运行测试时用作工作目录的路径。
#请注意,测试结果将写入TestResults中的.trx文件
#此目录的子目录。
$TestWorkingPath=“c:\path\to\checkout\dir”
#要为其运行测试的程序集。
$TestAssembly=“C:\path\to\test.dll”
#获取临时文件夹。
#从命令行运行时,这将类似于用户的AppData\Local\Temp
#从TeamCity运行时,这将类似于C:\TeamCity\buildAgent\temp\buildTemp
$tempDir=(获取项目$Env:TEMP).FullName
写入主机(“tempDir:+$tempDir)
#在一个
#临时目录的CustomCoverage子目录。
$outputDir=加入路径$tempDir“CustomCoverage”
写入主机(“outputDir:+$outputDir)
#创建输出目录,但前提是它不存在。
if(!(测试路径$outputDir))
{
md$outputDir
}
#计算出用于IISExpress的dotcover日志文件的路径,并将其删除
#如果它已经存在。
$dotCoverIISExpressLogFilename=“$outputDir\DOTCOVERL.iisexpress.log.txt”
If(测试路径$dotCoverIISExpressLogFilename)
{
del$dotCoverIISExpressLogFilename
}
#计算用于IISExpress的dotCover输出文件的路径。
$DOTCOVERIISEXPRESOUTPUTFILENAME=“$outputDir\DOTCOVERL.iisexpress.dcvr”
#计算我们将传递给IIS Express的参数。
$IISExpressArgs=“/path:$WebsitePath/port:$WebsitePort/trace:info”
#计算要传递给dotCover以启动和覆盖IIS Express的参数。
#因为dotCover的参数很长,所以我们将它们写入一个配置文件。
$dotCoverIISExpressConfigFilename=“$outputDir\DOTCOVERL.iisexpress.config.xml”
“`n”+`
“`n”+`
“$dotCoverIISExpressLogFilename`n”+`
“$dotCoverIISExpressOutputFilename`n”+`
“$IISExpressPath`n”+`
“$IISExpressArgs`n”+`
“`n”`
|输出文件-编码ASCII$dotCoverIISExpressConfigFilename
#将执行dotCover的命令写入.bat文件。
#在批处理文件中,我们将stdout和stderr重定向到一个文件,以便查看
#任何失败的原因。
#我们把它放在一个批处理文件中,因为它对于PSExec来说太长了
#单个参数限制为260个字符。
# http://forum.sysinternals.com/psexec-argument-to-long_topic14203.html
$dotCoverIISExpressRunFilename=“$outputDir\DOTCOVERL.iisexpress.run.bat”
“%$DotCoverPath`”cover`“%$dotCoverIISExpressConfigFilename`”>`“$outputDir\iisexpress.stdout.txt`”2>`“$outputDir\iisexpress.stderr.txt`”Out文件-编码ASCII$dotCoverIISExpressRunFilename
#我们需要在一个交互式会话中运行IISExpress(托管在dotCover中),在
#为了能够发送一个WM_QUIT,在测试结束后优雅地关闭它
#测试(或者不记录覆盖率数据)。
#我们通过PSExec运行dotCover来实现这一点。
#-一:互动会议
#-h:使用帐户的提升令牌
#-accepteula:接受pstools EULA,因为运行生成代理的用户可能没有
$psExecArgs=“-i-h-accepteula`”$dotCoverIISExpressRunFilename`”
#启动PSExec->dotcolver->IISExpress。
#这会阻塞,所以我们使用启动过程,所以它是在一个单独的进程中完成的
#进程,因此此脚本将继续。
#-PassThru参数是必需的,这样启动进程将返回一个进程
#处理。
$IISExpressProcess=(启动进程$PSExecPath$psExecArgs-PassThru)
#计算用于VSTest的dotcover日志文件的路径,并将其删除
#如果它已经存在。
$dotCoverVSTestLogFilename=“$outputDir\dotcover.vstest.log.txt”
If(测试路径$dotCoverVSTestLogFilename)
{
del$dotCoverVSTestLogFilename
}
#计算用于VSTest的dotCover输出文件的路径。
$dotCoverVSTestOutputFilename=“$outputDir\dotcover.vstest.dcvr”
#计算要传递到VSTest控制台的参数。
#/Logger:trx参数输出