持續整合 - 測試



持續整合的關鍵特性之一是確保持續測試包含CI伺服器構建的所有程式碼。CI伺服器執行構建後,必須確保已到位測試用例以對所需程式碼進行測試。每個CI伺服器都能夠在CI套件中執行單元測試用例。在.Net中,單元測試是.Net框架中內建的功能,並且可以將其整合到CI伺服器中。

本章將介紹如何在.Net中定義測試用例,然後在構建完成後讓我們的TeamCity伺服器執行此測試用例。為此,我們首先需要確保為我們的示例專案定義了一個單元測試。

為此,我們必須以最大的謹慎遵循以下步驟。

步驟1 - 讓我們向我們的解決方案新增一個新類,這將在我們的單元測試中使用。此類將具有一個名稱變數,該變數將儲存字串“持續整合”。此字串將在網頁上顯示。右鍵單擊“簡單專案”並選擇選單選項新增→類

Add Class

步驟2 - 為類命名為Tutorial.cs,然後單擊螢幕底部的“新增”按鈕。

Tutorial CS

步驟3 - 開啟Tutorial.cs檔案並在其中新增以下程式碼。此程式碼僅建立一個名為Name的字串,並在建構函式中將名稱分配給字串值Continuous Integration

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Simple {
   public class Tutorial {
      public String Name;
      public Tutorial() {
         Name = "Continuous Integration";
      }
   }
}

步驟4 - 讓我們對Demo.aspx.cs檔案進行更改以使用此新類。使用以下程式碼更新此檔案中的程式碼。因此,此程式碼現在將建立上面建立的類的新的例項。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Simple {
   public partial class Demo : System.Web.UI.Page {
      Tutorial tp = new Tutorial();
      protected void Page_Load(object sender, EventArgs e) {
         tp.Name = "Continuous Integration";
      }
   }
}

步驟5 - 在我們的demo.aspx檔案中,讓我們現在引用在aspx.cs檔案中建立的tp.Name變數。

<%@ Page Language = "C#" AutoEventWireup = "true" 
   CodeBehind = "Demo.aspx.cs" Inherits = "Simple.Demo" %>
<!DOCTYPE html>
<html xmlns = "http://www.w3.org/1999/xhtml">
   
   <head runat = "server">
      <title>TutorialsPoint1</title>
   </head>
   
   <body>
      <form id = "form1" runat = "server">
         <div>
            <% = tp.Name%>)
         </div>
      </form>
   </body>
   
</html>

為了確保我們的程式碼在進行這些更改後能夠正常工作,您可以在Visual Studio中執行程式碼。編譯完成後,您應該會獲得以下輸出。

Continuous Integration Output

步驟6 - 現在是時候向專案新增我們的單元測試了。右鍵單擊解決方案並選擇選單選項新增→新專案

Right Click on Solution

步驟7 - 導航到測試,並在右側選擇單元測試專案。命名為DemoTest,然後單擊“確定”。

Unit Test Project

步驟8 - 在您的Demo Test專案中,您需要新增對簡單專案的引用以及必要的測試程式集。右鍵單擊該專案並選擇選單選項新增引用

Add Reference

步驟9 - 在出現的下一個螢幕中,轉到“專案”,選擇Simple Reference,然後單擊“確定”。

Simple Reference

步驟10 - 再次單擊新增引用,轉到“程式集”並在搜尋框中鍵入Web。然後新增System.Web的引用。

System Web

步驟11 - 在單元測試檔案中,新增以下程式碼。此程式碼將確保Tutorial類具有一個字串名稱變數。它還將斷言Name應該等於“持續整合”的值。這將是我們的簡單測試用例。

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.VisualStudio.TestTools.UnitTesting.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Simple;

namespace DemoTest {
   [TestClass]
   public class UnitTest1 {
      [TestMethod]
      public void TestMethod1() {
         Tutorial tp = new Tutorial();
         Assert.AreEqual(tp.Name, "Continuous Integration");
      }
   }
}

步驟12 - 現在讓我們在Visual Studio中執行我們的測試以確保它有效。在Visual Studio中,選擇選單選項測試→執行→所有測試

Test Run Alltests

執行測試後,您將在Visual Studio的左側看到測試成功執行。

Test Successful

在TeamCity中啟用持續測試 - 現在所有測試用例都已到位,是時候將它們整合到我們的Team City伺服器中了。

步驟13 - 為此,我們需要在專案配置中建立一個構建步驟。轉到您的專案主頁並單擊“編輯配置設定”。

Edit Configuration Settings

步驟14 - 然後轉到“構建步驟→MS Build”並單擊“新增構建步驟”,如下面的螢幕截圖所示。

Build Step Ms Build

在出現的下一個螢幕中,新增以下值 -

  • 選擇執行程式型別為Visual Studio Tests。

  • 輸入可選的測試步驟名稱。

  • 選擇測試引擎型別為VSTest

  • 選擇測試引擎版本為VSTest2013

  • 在測試檔名稱中,提供位置為DemoTest\bin\Debug\DemoTest.dll - 請記住,DemoTest是我們包含單元測試的專案的名稱。DemoTest.dll將由我們的第一個構建步驟生成。

  • 單擊“儲存”,它將位於螢幕末尾。

Save Button

現在您將為專案有兩個構建步驟。第一個是構建步驟,它將構建您的應用程式程式碼和您的測試專案。下一個將用於執行您的測試用例。

Build steps

步驟15 - 現在是時候將所有程式碼簽入Git了,以便可以觸發整個構建過程。唯一的區別是這次您需要從Demo父資料夾執行git addgit commit命令,如下面的螢幕截圖所示。

Demo Parent Folder

現在,當觸發構建時,您將看到一個初始輸出,該輸出將說明測試已透過。

Initial output

步驟16 - 如果單擊“測試透過”結果並轉到“測試”選項卡,您現在將看到UnitTest1已執行並且已透過。

Unit Test 1
廣告

© . All rights reserved.