Tích hợp liên tục - Thử nghiệm

Một trong những tính năng chính của Tích hợp liên tục là đảm bảo rằng on-going testinggiữ tất cả mã được tạo bởi máy chủ CI. Sau khi xây dựng được thực hiện bởi Máy chủ CI, nó phải được đảm bảo rằng các trường hợp thử nghiệm đã sẵn sàng để có được mã yêu cầu được kiểm tra. Mọi máy chủ CI đều có khả năng chạy các trường hợp kiểm thử đơn vị như một phần củaCI suite. Trong.Net, kiểm thử đơn vị là một tính năng được tích hợp sẵn trong .Net framework và điều tương tự cũng có thể được kết hợp vào Máy chủ CI.

Chương này sẽ xem cách chúng ta có thể xác định một trường hợp kiểm thử trong .Netvà sau đó để máy chủ TeamCity của chúng tôi chạy trường hợp thử nghiệm này sau khi quá trình xây dựng hoàn tất. Đối với điều này, trước tiên chúng ta cần đảm bảo rằng chúng ta có một unit test được xác định cho dự án mẫu của chúng ta.

Để làm được điều này, chúng ta phải thực hiện các bước tiếp theo một cách hết sức cẩn thận.

Step 1- Hãy thêm một lớp mới vào giải pháp của chúng ta, lớp này sẽ được sử dụng trong Bài kiểm tra Đơn vị của chúng ta. Lớp này sẽ có một biến tên, sẽ chứa chuỗi “Tích hợp liên tục”. Chuỗi này sẽ được hiển thị trên trang web. Nhấp chuột phải vào Dự án Đơn giản và chọn tùy chọn menuAdd → Class.

Step 2 - Đặt tên cho lớp là Tutorial.cs và nhấp vào nút Thêm ở cuối màn hình.

Step 3- Mở tệp Tutorial.cs và thêm đoạn mã sau vào đó. Mã này chỉ tạo một chuỗi có tên làNamevà trong Constructor chỉ định tên cho một giá trị chuỗi là 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";
      }
   }
}

Step 4 - Hãy để chúng tôi thực hiện thay đổi đối với Demo.aspx.cstệp để sử dụng lớp mới này. Cập nhật mã trong tệp này với mã sau. Vì vậy, đoạn mã này bây giờ sẽ tạo một thể hiện mới của lớp đã tạo ở trên.

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";
      }
   }
}

Step 5 - Trong của chúng tôi demo.aspx hãy để chúng tôi tham khảo tp.Name biến, được tạo trong aspx.cs tập tin.

<%@ 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>

Chỉ để đảm bảo mã của chúng tôi hoạt động tốt với những thay đổi này, bạn có thể chạy mã trong Visual Studio. Bạn sẽ nhận được kết quả sau khi quá trình biên dịch hoàn tất.

Step 6- Bây giờ đã đến lúc thêm Unit tests của chúng ta vào dự án. Nhấp chuột phải vàoSolution và chọn tùy chọn menu Add → New Project.

Step 7 - Điều hướng đến Test và ở phía bên phải, chọn Unit Test Project. Đặt tên làDemoTest và sau đó bấm OK.

Step 8 - Trong của bạn Demo Test project, bạn cần thêm tham chiếu đến dự án Đơn giản và testing assemblies. Nhấp chuột phải vào dự án và chọn tùy chọn menuAdd Reference.

Step 9 - Trong màn hình tiếp theo xuất hiện, đi tới Dự án, chọn Simple Reference và bấm OK.

Step 10 - Bấm Add Reference một lần nữa, chuyển đến Assemblies và nhập Webtrong hộp Tìm kiếm. Sau đó, thêm một tham chiếu củaSystem.Web.

Step 11 - Trong Unit Test file, thêm mã sau. Mã này sẽ đảm bảo rằng lớp Hướng dẫn có một biến tên chuỗi. Nó cũng sẽ khẳng định thực tế rằng Tên phải bằng một giá trị của "Tích hợp liên tục". Đây sẽ là trường hợp thử nghiệm đơn giản của chúng tôi.

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");
      }
   }
}

Step 12- Bây giờ hãy chạy thử nghiệm của chúng tôi trong Visual Studio để đảm bảo rằng nó hoạt động. Trong Visual Studio, hãy chọn tùy chọn menuTest → Run → All Tests.

Sau khi chạy thử nghiệm, bạn sẽ thấy Kiểm tra thành công chạy ở phía bên trái của Visual Studio.

Bật kiểm tra liên tục trong TeamCity - Bây giờ tất cả các trường hợp thử nghiệm đã sẵn sàng, đã đến lúc tích hợp chúng vào máy chủ Team City của chúng tôi.

Step 13- Đối với điều này, chúng ta cần tạo một bước xây dựng trong cấu hình Dự án của chúng ta. Chuyển đến trang chủ dự án của bạn và nhấp vào Chỉnh sửa Cài đặt Cấu hình.

step 14 - Sau đó đi tới Bước xây dựng → Bản dựng MS và nhấp vào Thêm bước xây dựng như được mô tả trong ảnh chụp màn hình sau.

Trong màn hình tiếp theo xuất hiện, hãy thêm các giá trị sau:

  • Chọn loại người chạy là Visual Studio Tests.

  • Nhập tên bước Kiểm tra tùy chọn.

  • Chọn loại Công cụ kiểm tra là VSTest.

  • Chọn phiên bản Test Engine làm VSTest2013.

  • Trong tên tệp Kiểm tra, cung cấp vị trí là DemoTest\bin\Debug\DemoTest.dll - Nhớ lấy DemoTestlà tên của dự án chứa các Bài kiểm tra Đơn vị của chúng tôi. CácDemoTest.dll sẽ được tạo bởi bước xây dựng đầu tiên của chúng tôi.

  • Nhấp vào Lưu sẽ hiển thị ở cuối màn hình.

Bây giờ bạn sẽ có 2 bước xây dựng cho dự án của mình. Đầu tiên là bước Xây dựng sẽ xây dựng mã ứng dụng và dự án thử nghiệm của bạn. Và phần tiếp theo sẽ được sử dụng để chạy các trường hợp thử nghiệm của bạn.

Step 15- Bây giờ đã đến lúc đăng ký tất cả mã của bạn trong Git, để toàn bộ quá trình xây dựng có thể được kích hoạt. Sự khác biệt duy nhất là lần này, bạn cần chạygit addgit commit lệnh từ Demo parent folder như thể hiện trong ảnh chụp màn hình sau đây.

Bây giờ khi bản dựng được kích hoạt, bạn sẽ thấy kết quả đầu ra ban đầu cho biết rằng bài kiểm tra đã vượt qua.

Step 16 - Nếu bạn nhấp vào kết quả Kiểm tra đã vượt qua và chuyển đến tab Kiểm tra, bây giờ bạn sẽ thấy rằng UnitTest1 đã được thực thi và nó đã được vượt qua.