IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 使用并发参数编译项目和运行单元测试 -> 正文阅读

[开发测试]使用并发参数编译项目和运行单元测试


一、MSBuild并发编译

平常使用Jenkins构建项目时,默认使用MSbuild中没有带并发参数,所以比较慢

不带并发参数构建为

msbuild 项目路径

带并发参数, 只要有这个开关默认使用最大的并发数,当然你也可以指定CPU的数量

msbuild 项目路径 -maxCpuCount

当然这里只是简写,还有很多参数需要你根据自己具体项目添加

写一个bat批处理计算编译花费时间

@echo off
setlocal

rem The format of %TIME% is HH:MM:SS,CS for example 23:59:59,99
set STARTTIME=%TIME%

rem here begins the command you want to measure

:: ======================  msbuild命令行  ===================

rem here ends the command you want to measure

set ENDTIME=%TIME%

rem output as time
echo STARTTIME: %STARTTIME%
echo ENDTIME: %ENDTIME%

rem convert STARTTIME and ENDTIME to centiseconds
set /A STARTTIME=(1%STARTTIME:~0,2%-100)*360000 + (1%STARTTIME:~3,2%-100)*6000 + (1%STARTTIME:~6,2%-100)*100 + (1%STARTTIME:~9,2%-100)
set /A ENDTIME=(1%ENDTIME:~0,2%-100)*360000 + (1%ENDTIME:~3,2%-100)*6000 + (1%ENDTIME:~6,2%-100)*100 + (1%ENDTIME:~9,2%-100)

rem calculating the duratyion is easy
set /A DURATION=%ENDTIME%-%STARTTIME%

rem we might have measured the time inbetween days
if %ENDTIME% LSS %STARTTIME% set set /A DURATION=%STARTTIME%-%ENDTIME%

rem now break the centiseconds down to hors, minutes, seconds and the remaining centiseconds
set /A DURATIONH=%DURATION% / 360000
set /A DURATIONM=(%DURATION% - %DURATIONH%*360000) / 6000
set /A DURATIONS=(%DURATION% - %DURATIONH%*360000 - %DURATIONM%*6000) / 100
set /A DURATIONHS=(%DURATION% - %DURATIONH%*360000 - %DURATIONM%*6000 - %DURATIONS%*100)

rem some formatting
if %DURATIONH% LSS 10 set DURATIONH=0%DURATIONH%
if %DURATIONM% LSS 10 set DURATIONM=0%DURATIONM%
if %DURATIONS% LSS 10 set DURATIONS=0%DURATIONS%
if %DURATIONHS% LSS 10 set DURATIONHS=0%DURATIONHS%

rem outputing
echo STARTTIME: %STARTTIME% centiseconds
echo ENDTIME: %ENDTIME% centiseconds
echo DURATION: %DURATION% in centiseconds
echo %DURATIONH%:%DURATIONM%:%DURATIONS%,%DURATIONHS%

pause

endlocal
goto :EOF

在这里插入图片描述
MSBuild并行编译时间大概是非并行编译的 68% (78/114)

二、MSTest并发运行测试用例

单元测试框架我用的是MSTest V2 , 它本身也是支持并发运行,需要在一个.runsettings文件中指定测试并发的属性,例如

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <!--RunConfiguration-->
    <!--DisableParallelization>true</DisableParallelization-->
  <!--/RunConfiguration-->
  <MSTest>
    <Parallelize>
      <Workers>0</Workers>
      <Scope>ClassLevel</Scope>
    </Parallelize>
  </MSTest>
</RunSettings>
  • 这个例子中并发数量0的意思是使用最高的并发数,当然还是可以指定数量
  • 并发的级别可以是ClassLevel 类级别和 MethodLevel方法级别,使用后者是要注意在类中测试用例的顺序是随机的

如果某个类或者方法不想使用并发的话,可以在类或方法上方添加特性[DoNotParallelize()],或者将在.runsettings文件中DisableParallelization设置为true
在这里插入图片描述
所以运行MSTest命令行如下, 指定test.runsettings具体位置

vstest.console your-Test.dll /Settings:"D:\Temp\test.runsettings"

同样的我们也可以对比时间

在这里插入图片描述
MSTest并行运行测试时间大概是非并行的 24% (93/379)

三、时间花费对比

MSBuild并行编译时间大概是非并行编译的 68% (78/114)
MSTest并行运行测试时间大概是非并行的 24% (93/379)

综上, 更推荐使用并发技术编译和测试, 这样可以大量节省Jenkins项目的构建时间 😎

参考:
Build multiple projects in parallel with MSBuild
How to run unit tests (MSTest) in parallel?
MSTest V2: in-assembly parallel test execution

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-07-27 16:32:45  更:2021-07-27 16:33:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/7 4:34:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码