Учебники

Непрерывная интеграция — тестирование

Одной из ключевых особенностей Continuous Integration является обеспечение того, чтобы текущее тестирование содержало весь код, созданный сервером CI. После того, как CI Server выполняет сборку, необходимо убедиться в наличии тестовых случаев для проверки необходимого кода. Каждый сервер CI имеет возможность запускать модульные тесты как часть набора CI . В .Net модульное тестирование — это функция, которая встроена в платформу .Net, и то же самое можно включить и в CI Server.

В этой главе будет показано, как мы можем определить тестовый пример в .Net, а затем позволить нашему серверу TeamCity выполнить этот тестовый пример после завершения сборки. Для этого нам сначала нужно убедиться, что для нашего примера проекта определен модульный тест.

Чтобы сделать это, мы должны следовать последующим шагам с максимальной осторожностью.

Шаг 1 — Давайте добавим новый класс в наше решение, которое будет использоваться в нашем модульном тесте. Этот класс будет иметь переменную имени, которая будет содержать строку «Непрерывная интеграция». Эта строка будет отображаться на веб-странице. Щелкните правой кнопкой мыши Простой проект и выберите пункт меню Добавить → Класс .

Добавить класс

Шаг 2 — Дайте имя классу как Tutorial.cs и нажмите кнопку «Добавить» в нижней части экрана.

Учебник 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 теперь давайте обратимся к переменной tp.Name , которая была создана в файле aspx.cs.

<%@ 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. После завершения компиляции вы должны получить следующий вывод.

Непрерывный выход интеграции

Шаг 6 — Теперь пришло время добавить наши модульные тесты в проект. Щелкните правой кнопкой мыши Решение и выберите пункт меню Добавить → Новый проект .

Щелкните правой кнопкой мыши на Решение

Шаг 7 — Перейдите к Test и в правой части выберите Project Unit Project . Дайте имя как DemoTest и затем нажмите OK.

Модульный тестовый проект

Шаг 8 — В вашем проекте Demo Test вам нужно добавить ссылку на проект Simple и необходимые сборки для тестирования . Щелкните правой кнопкой мыши по проекту и выберите пункт меню Добавить ссылку .

Добавить ссылку

Шаг 9 — На следующем появившемся экране перейдите в Projects, выберите Simple Reference и нажмите OK.

Простая ссылка

Шаг 10 — Нажмите Добавить ссылку еще раз, перейдите к Сборкам и введите Web в поле поиска. Затем добавьте ссылку на System.Web .

Система Веб

Шаг 11 — В файле модульного теста добавьте следующий код. Этот код гарантирует, что у класса Tutorial есть переменная имени строки. Это также подтвердит тот факт, что Имя должно равняться значению «Непрерывная интеграция». Это будет наш простой тестовый пример.

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 выберите пункт меню « Тест» → «Выполнить» → «Все тесты» .

Тестовый прогон Alltests

После запуска теста вы увидите, что тест успешно запущен в левой части Visual Studio.

Тест успешен

Включение непрерывного тестирования в TeamCity. Теперь, когда все тестовые примеры созданы, пришло время интегрировать их в наш сервер Team City.

Шаг 13 — Для этого нам нужно создать шаг сборки в конфигурации нашего проекта. Перейдите к домашней странице своего проекта и нажмите «Изменить настройки конфигурации».

Изменить настройки конфигурации

Шаг 14 — Затем перейдите в Шаг сборки → MS Build и нажмите Добавить шаг сборки, как показано на следующем скриншоте.

Построить шаг Ms Build

На следующем экране добавьте следующие значения —

  • Выберите тип бегуна в качестве тестов Visual Studio.

  • Введите необязательное имя шага теста.

  • Выберите тип тестового двигателя как VSTest .

  • Выберите версию Test Engine как VSTest2013 .

  • В имени файла Test укажите местоположение как DemoTest \ bin \ Debug \ DemoTest.dll. Помните, что DemoTest — это название нашего проекта, который содержит наши модульные тесты. DemoTest.dll будет сгенерирован нашим первым шагом сборки.

  • Нажмите кнопку Сохранить, которая будет доступна в конце экрана.

Выберите тип бегуна в качестве тестов Visual Studio.

Введите необязательное имя шага теста.

Выберите тип тестового двигателя как VSTest .

Выберите версию Test Engine как VSTest2013 .

В имени файла Test укажите местоположение как DemoTest \ bin \ Debug \ DemoTest.dll. Помните, что DemoTest — это название нашего проекта, который содержит наши модульные тесты. DemoTest.dll будет сгенерирован нашим первым шагом сборки.

Нажмите кнопку Сохранить, которая будет доступна в конце экрана.

Кнопка Сохранить

Теперь у вас будет 2 этапа сборки для вашего проекта. Первый — это шаг Build, который создаст код вашего приложения и ваш тестовый проект. А следующий будет использоваться для запуска ваших тестовых случаев.

Построить шаги

Шаг 15. Теперь пришло время зарегистрировать весь ваш код в Git, чтобы можно было запустить весь процесс сборки. Единственное отличие состоит в том, что на этот раз вам нужно запустить команды git add и git commit из родительской папки Demo, как показано на следующем снимке экрана.

Папка Demo Parent

Теперь, когда сборка запущена, вы увидите начальный вывод, который скажет, что тест пройден.

Начальный вывод

Шаг 16. Если вы щелкнете по результату «Тест пройден» и перейдете на вкладку «Тест», вы увидите, что UnitTest1 был выполнен и что он прошел.