Непрерывная интеграция - тестирование
Одна из ключевых особенностей непрерывной интеграции - гарантировать, что on-going testingсодержит весь код, созданный CI-сервером. После того, как CI-сервер выполняет сборку, необходимо убедиться в наличии тестовых примеров для тестирования необходимого кода. Каждый CI-сервер имеет возможность запускать модульные тесты как частьCI suite. В.Net, модульное тестирование - это функция, встроенная в .Net framework и то же самое можно включить в CI-сервер.
В этой главе мы увидим, как мы можем определить тестовый пример в .Netа затем позвольте нашему серверу TeamCity запустить этот тестовый пример после завершения сборки. Для этого нам сначала нужно убедиться, что у нас есть модульный тест, определенный для нашего образца проекта.
Для этого мы должны с особой тщательностью выполнять следующие шаги.
Step 1- Давайте добавим в наше решение новый класс, который будет использоваться в нашем модульном тесте. У этого класса будет переменная имени, которая будет содержать строку «Непрерывная интеграция». Эта строка будет отображаться на веб-странице. Щелкните правой кнопкой мыши простой проект и выберите пункт меню.Add → Class.
Step 2 - Дайте название классу как Tutorial.cs и нажмите кнопку «Добавить» внизу экрана.
Step 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";
}
}
}
Step 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";
}
}
}
Step 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. После завершения компиляции вы должны получить следующий результат.
Step 6- Теперь пора добавить в проект наши модульные тесты. Щелкните правой кнопкой мыши наSolution и выберите пункт меню Add → New Project.
Step 7 - Перейдите к Test и с правой стороны выберите Unit Test Project. Дайте имя какDemoTest а затем нажмите ОК.
Step 8 - В вашем Demo Test project, вам необходимо добавить ссылку на проект Simple и на необходимые testing assemblies. Щелкните проект правой кнопкой мыши и выберите пункт меню.Add Reference.
Step 9 - На следующем появившемся экране перейдите в Projects, выберите Simple Reference и нажмите ОК.
Step 10 - Щелкните Add Reference снова перейдите в Сборки и введите Webв поле поиска. Затем добавьте ссылку наSystem.Web.
Step 11 - В Unit Test fileдобавьте следующий код. Этот код гарантирует, что у класса 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");
}
}
}
Step 12- Теперь давайте запустим наш тест в Visual Studio, чтобы убедиться, что он работает. В Visual Studio выберите пункт менюTest → Run → All Tests.
После запуска теста вы увидите, что тест успешно запущен в левой части Visual Studio.
Включение непрерывного тестирования в TeamCity - Теперь, когда все тестовые примеры готовы, пришло время интегрировать их в наш сервер Team City.
Step 13- Для этого нам нужно создать шаг сборки в нашей конфигурации проекта. Перейдите на главную страницу своего проекта и щелкните Изменить параметры конфигурации.
step 14 - Затем перейдите к Шагу сборки → Сборка MS и нажмите Добавить шаг сборки, как показано на следующем снимке экрана.
На следующем появившемся экране добавьте следующие значения -
Выберите тип бегуна как Visual Studio Tests.
Введите необязательное имя шага теста.
Выберите тип Test Engine как VSTest.
Выберите версию Test Engine как VSTest2013.
В имени тестовых файлов укажите расположение как DemoTest\bin\Debug\DemoTest.dll - Помни это DemoTestэто название нашего проекта, который содержит наши модульные тесты. ВDemoTest.dll будет сгенерирован нашим первым шагом сборки.
Щелкните Сохранить, который будет доступен в конце экрана.
Теперь у вас будет 2 этапа сборки для вашего проекта. Первый - это этап сборки, на котором будет построен код вашего приложения и ваш тестовый проект. А следующий будет использоваться для запуска ваших тестовых случаев.
Step 15- Теперь пришло время зарегистрировать весь ваш код в Git, чтобы можно было запустить весь процесс сборки. Единственная разница в том, что на этот раз вам нужно запуститьgit add а также git commit команда из Demo parent folder как показано на следующем снимке экрана.
Теперь, когда запускается сборка, вы увидите начальный результат, в котором будет сказано, что тест пройден.
Step 16 - Если вы нажмете на результат «Тест пройден» и перейдете на вкладку «Тест», вы увидите, что UnitTest1 был выполнен и успешно пройден.