Ciągła integracja - testowanie

Jedną z kluczowych cech Continuous Integration jest zapewnienie, że on-going testingprzechowuje cały kod, który jest tworzony przez serwer CI. Po kompilacji przez serwer CI należy upewnić się, że istnieją przypadki testowe, aby przetestować wymagany kod. Każdy serwer CI ma możliwość uruchamiania przypadków testów jednostkowych w ramach platformyCI suite. W.Net, testy jednostkowe to funkcja wbudowana w .Net framework i to samo można również włączyć do serwera CI.

W tym rozdziale zobaczysz, jak zdefiniować przypadek testowy w .Neta następnie pozwól naszemu serwerowi TeamCity uruchomić ten przypadek testowy po zakończeniu kompilacji. W tym celu musimy najpierw upewnić się, że mamy zdefiniowany test jednostkowy dla naszego przykładowego projektu.

Aby to zrobić, musimy postępować zgodnie z następującymi krokami z najwyższą ostrożnością.

Step 1- Dodajmy nową klasę do naszego rozwiązania, która będzie używana w naszym teście jednostkowym. Ta klasa będzie miała zmienną z nazwą, w której będzie przechowywany ciąg „Continuous Integration”. Ten ciąg zostanie wyświetlony na stronie internetowej. Kliknij prawym przyciskiem myszy Prosty projekt i wybierz opcję menuAdd → Class.

Step 2 - Podaj nazwę klasy jako Tutorial.cs i kliknij przycisk Dodaj u dołu ekranu.

Step 3- Otwórz plik Tutorial.cs i dodaj do niego następujący kod. Ten kod po prostu tworzy ciąg o nazwieNameiw konstruktorze przypisz nazwę do wartości ciągu jako 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 - Zróbmy zmianę w naszym Demo.aspx.csplik, aby użyć tej nowej klasy. Zaktualizuj kod w tym pliku za pomocą następującego kodu. Tak więc ten kod utworzy teraz nową instancję klasy utworzonej powyżej.

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 - W naszym demo.aspx plik, przejdźmy teraz do pliku tp.Name zmienna, która została utworzona w aspx.cs plik.

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

Aby upewnić się, że nasz kod działa dobrze z tymi zmianami, możesz uruchomić kod w programie Visual Studio. Po zakończeniu kompilacji powinieneś otrzymać następujące dane wyjściowe.

Step 6- Teraz nadszedł czas, aby dodać nasze testy jednostkowe do projektu. Kliknij prawym przyciskiem myszySolution i wybierz opcję menu Add → New Project.

Step 7 - Przejdź do Test i po prawej stronie wybierz Unit Test Project. Podaj nazwę jakoDemoTest a następnie kliknij OK.

Step 8 - W twoim Demo Test project, musisz dodać odwołanie do projektu Simple i do niezbędnego testing assemblies. Kliknij projekt prawym przyciskiem myszy i wybierz opcję menuAdd Reference.

Step 9 - Na następnym ekranie, który się pojawi, przejdź do Projekty, wybierz Simple Reference i kliknij OK.

Step 10 - Kliknij Add Reference ponownie, przejdź do Assemblies i wpisz Webw polu wyszukiwania. Następnie dodaj odniesienie doSystem.Web.

Step 11 - W Unit Test filedodaj następujący kod. Ten kod zapewni, że klasa Tutorial ma zmienną z nazwą ciągu. Będzie również potwierdzać fakt, że Nazwa powinna mieć wartość „Continuous Integration”. To będzie nasz prosty przypadek testowy.

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- Teraz uruchommy nasz test w programie Visual Studio, aby upewnić się, że działa. W programie Visual Studio wybierz opcję menuTest → Run → All Tests.

Po uruchomieniu testu zobaczysz, że test został pomyślnie uruchomiony po lewej stronie programu Visual Studio.

Włączanie ciągłego testowania w TeamCity - Teraz, gdy wszystkie przypadki testowe są już gotowe, nadszedł czas, aby zintegrować je z naszym serwerem Team City.

Step 13- W tym celu musimy utworzyć krok kompilacji w naszej konfiguracji projektu. Przejdź do strony głównej swojego projektu i kliknij Edytuj ustawienia konfiguracji.

step 14 - Następnie przejdź do kroku kompilacji → kompilacja MS i kliknij Dodaj krok kompilacji, jak pokazano na poniższym zrzucie ekranu.

Na następnym ekranie, który się pojawi, dodaj następujące wartości -

  • Wybierz typ elementu uruchamiającego jako testy programu Visual Studio.

  • Wprowadź opcjonalną nazwę kroku testowego.

  • Wybierz typ silnika testowego jako VSTest.

  • Wybierz wersję Test Engine jako VSTest2013.

  • W nazwie plików testowych podaj lokalizację jako DemoTest\bin\Debug\DemoTest.dll - Zapamietaj to DemoTestto nazwa naszego projektu, który zawiera nasze testy jednostkowe. PlikDemoTest.dll zostanie wygenerowany w naszym pierwszym kroku kompilacji.

  • Kliknij Zapisz, które będzie dostępne na końcu ekranu.

Teraz będziesz mieć 2 kroki kompilacji dla swojego projektu. Pierwszym jest krok kompilacji, który utworzy kod aplikacji i projekt testowy. A następny zostanie użyty do uruchomienia przypadków testowych.

Step 15- Teraz nadszedł czas, aby zarejestrować cały kod w Git, aby można było uruchomić cały proces kompilacji. Jedyną różnicą jest to, że tym razem musisz uruchomićgit add i git commit polecenie z Demo parent folder jak pokazano na poniższym zrzucie ekranu.

Teraz po uruchomieniu kompilacji zobaczysz początkowe dane wyjściowe, które poinformują, że test przeszedł.

Step 16 - Jeśli klikniesz na wynik testu zaliczony i przejdziesz do zakładki Test, zobaczysz teraz, że UnitTest1 został wykonany i przeszedł.