透過Jenkis做為自動化Compile跟Deployment的管理工具,是非常棒的一件事情
視覺化的過程,可以很方便將這樣的操作轉移給維護人員管理
這次,剛好因為專案需求,需要補齊專案開發階段所缺少的Unit Test
也為了讓原始碼有一定的可靠度,提高自動化過程中偵錯的效率
決定將Unit Test也綁上Jenkis,讓每一次的版本更新都有一定的穩定度
思維很簡單
1. Visual Studio Unit Test 本機可跑
2. Jenkis 加入vstest.console.exe支援
3. 透過Jenkis來執行Unit Test
4. 知道這次commit的程式碼,是否相容於目前版控的版本,且相對安全(跑過測試)
特別需要注意
1. 確認Unit Test專案的Web config有多少連線需要設定
- Oracle的連線 : C:xxx11.2.0client_1networkadminxxx.ora
- MSSQL的連線 : Web.config
- DNS解譯 : Host file.
- Firewall
2.確認Compile跟Unit Test需要跑的編譯環境,這會影響跑出來是否正常
Compile
- c:xxxxxxxxxxxv4.0.30319MSBuild.exe
- Platform=”Any CPU”
- Build “Debug” or “Release”
Unit Test
- Framework:framework45
- /Platform:x86
3.先在本機跑過,並且是用Command Line的方式跑過,模擬在Jenkis跑指令的結果
實際整合過程
1. 找出MSbuild.exe在哪個目錄內,通常會跟版本有關,也必須要用跟你Visual Studio(VS)一樣的設定,以免Command Line模式過不了
C:WindowsMicrosoft.NETFrameworkv4.0.30319MSBuild.exe
2. 下指令,用MSBuild把專案Build過,記得跟VS下一樣的參數
C:>”C:WindowsMicrosoft.NETFrameworkv4.0.30319MSBuild.exe”
/p:Platform=”Any CPU” “C:UsersxxxxxxXXX_UnitTest.sln”
3.通常會跑過一整串密密麻麻的指令,最後停在這邊,確定這次是否有錯誤,秀綠燈就代表沒太大問題(0 Errors),頂多有些Warnings。
4.找出vstest.console.exe,下指令用VSTest把專案Build過,記得跟VS下一樣的參數,同樣,也確認最後是否跑出綠燈
C:>“C:Program Files (x86)Microsoft Visual Studio 11.0Common7IDECommonExtensionsMicrosoftTestWindowVSTest.Console.exe”
/Framework:framework45 /Platform:x86 /Enablecodecoverage /InIsolation
“C:UsersxxxxxxXXX_UnitTestbinDebugXXX_UnitTest.dll”
5.做到這邊,至少可以確認這包專案是安全的,且產出的結果也符合預期,假設,後續的動作遇到問題,比較能釐清,是Jenkis那包專案在整合上,或是Jenkis所在主機環境的問題
6.透過SVN ( 或其他版本控制 ),將這包專案更新上SVN
( 通常,本機端更新上去的檔案,就是Jenkis編譯跟發佈的來源資料 )
8.安裝完畢後,必須先設定一些機本的路徑,方便之後套用
9.這邊主要是指定版本跟路徑使用
如果有很多個VSTest的版本要設定,你可以用Name來區分不同版本,Path就指向不同檔案
EX: VS 2012 / VS 2010 對應Microsoft Visual Studio 11.0Common7或其他版本
10.開個新的執行Project,名稱XXX Unit Test.
11.跟其他專案一樣,指定要從哪個SVN資料夾去找專案
12.利用MSBuild,透過Command Lin方式,指定專案路徑(*.sln)到Build File,用意跟步驟2意思是一樣的,這也是為什麼,特別強調要從本機Command Line先跑過,確保你了解版本跟參數沒用錯
13.新增一個VSTest.console區塊,指定VsTest Version。這邊指定的選項,來自於步驟9. Test Files指的是你要驗的Dll位置,通常在專案/Build/Debug(Release)/xxx.Dll
14.點開Advanced,前3個看自己需求,再決定是否要勾,重點是Platform跟.Net Framework Version 必須要跟VS設定值一樣,以免出現錯誤
14.完成上述的設定以後,就可以進行第一輪測跑,如果一切順利,Console就會看到一堆Passed的測試,當然,也可以直接看執行結果,藍燈就是正常,紅燈就哭了
測試的結果,可以綁定Report,作為簡單的測試報告
這邊,等有空再補摟…….待續













