iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 21
1
Cloud Native

從零開始建立自動化發佈的流水線系列 第 21

21. 自動化測試 - 實作篇

最新內容已更新至 Blog: 使用 CI 進行自動化測試

吉米: 寫好了單元測試,也提交到版控了,但是 CI Server 怎麼沒有進行測試的動作。

Eric: 對啊,所以需要額外進行設定,讓 CI Server 知道要進行測試。

吉米: 嗯嗯。

Eric: 那我們開始吧!


在開始之前,先建立一個名稱為 Calculate.Tests 的.net core unit test 專案,特別注意,使用的測試工具是 MSTest

[TestMethod]
public void Plus_1_plus_1_equ_2()
{
    CalculateTools.Calculate calc = new CalculateTools.Calculate();
    int expected= 2;

    int actual = calc.Plus(1, 1);

    Assert.AreEqual(expected, actual);
}

01. Travis CI

由於使用 MSTest 做為測試工具,而 MSTest 為 dotnet 的內含工具,只要在 .travis.yml 增加一行指令,就可以進行測試了。

script:
   - dotnet test Calculate.Tests/Calculate.Tests.csproj

從 Travis CI 的 log 中,就可以看到 Travis CI 真的有執行測試動作。

travis ci result

但假若使用 NUnit 或 xUnit 等測試工具,就需要額外設定,讓 Travis CI 知道有使用外部套件。下面是 Travis CI 官方說明文件的 yml 範例。

language: csharp
solution: solution-name.sln
install:
  - nuget restore solution-name.sln
  - nuget install xunit.runners -Version 1.9.2 -OutputDirectory testrunner
script:
  - xbuild /p:Configuration=Release solution-name.sln
  - mono ./testrunner/xunit.runners.1.9.2/tools/xunit.console.clr4.exe ./MyProject.Tests/bin/Release/MyProject.Tests.dll

02. Azure DevOps

對於自家的專案,Azure DevOps 的支援性就更高了。無需額外設定,Azure Pipleline 在建置時,發現有測試專案,就會自動進行測試。

AzurePipleline

除了單元測試以外,還有其他的測試計劃想加入測試,可以選擇 Test Plans ,不過這部份不是此次要說明的重點。筆者就避開不多加著墨。

TestPlan_1


吉米: 在完成測試部份旳設定後,感覺又多了一層保障。

Eric: 是啊,在 CI Server 進行測試,可以確實每一個提交者的程式,都是通過測試的。

吉米: 也就是,只有要人沒通過測試,就把變更後的程式提交上來,立馬就會被找抓包了。

Eric: 哈哈哈,要這樣說也可以。

<<待續>>


延伸閱讀

  1. Travis CI Document
  2. Setup Travis CI to compile a .NET CORE project, run the tests and package it for NuGet

上一篇
20. 自動化測試 - 觀念篇
下一篇
22. 持續發佈 - 安裝檔
系列文
從零開始建立自動化發佈的流水線30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言