| Назад: 16 Ручное тестирование | Содержание | Дальше: 18 Полезные объекты TestComplete |
Модульные тесты – это тесты, которые проверяют корректность работы отдельной функции или метода. Модульные тесты обычно пишутся программистами и служат для первичной проверки того, что внесенные изменения не изменили поведение отдельных компонентов системы.
TestComplete позволяет запускать некоторые виды модульных тестов. Для этого либо используются сторонние библиотеки, к которым обращается TestComplete при запуске тестов, либо вносятся изменения в тестируемое приложение, чтобы TestComplete имел доступ к имеющимся в нем модульным тестам.
TestComplete поддерживает следующие типы модульных тестов: MSTest, JUnit, NUnit, DUnit и TCUnitTest. Первые четыре запускаются при помощи отдельных утилит, а последний тип тестов требует внесения изменений в тестируемое приложение.
В справочной системе TestComplete подробно рассмотрены все шаги по подключению и запуску unit test-ов, мы же рассмотрим только два примера запуска модульных тестов для .NET приложения: NUnit и TCUnitTest.
Тестовое приложение
Специально для этой главы мы создали небольшое .NET-приложение (его можно найти в архиве с примерами, папка nUnitTestingApp).

В поля Var1 и Var2 вводятся числовые значения, а затем нажимается кнопка Plus или Minus. В зависимости от нажатой кнопки в третье поле помещается результат сложения либо вычитания этих переменных соответственно. Вот как выглядит код сложения и вычитания, а также код нажатий на кнопки:
public static int PlusMethod(int var1, int var2)
{
return var1 + var2;
}
public static int MinusMethod(int var1, int var2)
{
return var1 – var2;
}
private void button1_Click(object sender, EventArgs e)
{
txtResult.Text = (PlusMethod(Convert.ToInt32(this.txtVar1.Text),
Convert.ToInt32(this.txtVar2.Text))).ToString();
}
private void button2_Click(object sender, EventArgs e)
{
txtResult.Text = (MinusMethod(Convert.ToInt32(this.txtVar1.Text),
Convert.ToInt32(this.txtVar2.Text))).ToString();
}
Ниже мы поместили класс MyTests, который выполняет 3 проверки для метода PlusMethod:
// unit tests
[TestFixture]
public class MyTests
{
[Test]
public void PlusTest1()
{
Assert.AreEqual(Form1.PlusMethod(2, 3), 5);
}
[Test]
public void PlusTest2()
{
Assert.AreEqual(Form1.PlusMethod(5, 6), 11);
}
[Test]
public void PlusTest3()
{
Assert.AreEqual(Form1.PlusMethod(10, 3), 5);
}
}
Обратите внимание, что последний тест изначально задан неверно (10 + 3 = 13, а не 5, как ожидается в тесте). Это сделано специально, чтобы сымитировать ошибку в юнит-тесте.
Запуск NUnit тестов с помощью внешней утилиты
Для запуска юнит-тестов используется утилита командной сроки nunit-console.exe.
Прежде всего, необходимо указать путь к этой утилите в настройках TestComplete (Tools – Options – Engines – Unit Testing). Естественно, что для этого NUnit должен быть установлен на вашем компьютере.

Теперь добавим в проект элемент UnitTesting (правой кнопкой на имени проекта, Add – New Item – Unit Testing).

Затем правой кнопкой на добавленном элементе UnitTesting1, Add – New Item, и выберем элемент NUnit.

Теперь дважды щелкнем по добавленному элементу NUnit1 и заполним необходимые поля. В нашем случае это первые два поля:
- Assembly file name – имя exe либо dll файла с юнит тестами (в нашем случае это exe-файл приложения)
- Text fixtures – тестовые классы (это необязательное поле, по умолчанию будут использованы все классы с атрибутом TestFixture)

Теперь мы можем запускать модульные тесты прямо из скриптов TestComplete. Например:
function TestNUnit()
{
var ut = UnitTesting1.NUnit1;
}
В результате мы получим следующий лог:

Здесь можно прочитать, в каком именно тесте произошла ошибка, какое было ожидаемое и реальное значение и т.п. Эта информация предоставляется приложением NUnit.
Создание юнит тестов TCUnitTest
Кроме использования внешней утилиты, можно дать возможность TestComplete-у получать доступ к юнит тестам непосредственно через приложение.
Для этого необходимо в приложении добавить ссылку (Reference) на сборку
<TestComplete>\Bin\Extensions\AutomatedQA.TestComplete.UnitTesting.dll
установить свойство этой сборки Copy Local = True, а затем предоставить возможность TestComplete-у получать доступ к тестовым методам. Для этого необходимо воспользоваться методом AddClasses объекта UnitTesting:
Type[] typearr = { typeof(MyTests) };
UnitTesting.AddClasses(typearr);
Теперь добавим новый юнит тест (правый щелчок на элементе UnitTesting1, Add – New Item – TCUnitTest).

Запустите тестовое приложение и откройте в TestComplete добавленный тест. В первом поле необходимо выбрать процесс приложения (в нашем случае это nUnitTestingApp), а также одну из опций запуска.

Опции:
- Automatically load list of tests and run all tests – запускает все доступные TestComplete-у тесты
- Run only selected tests – запускает только выделенные в редакторе тесты
- Automatically load list of tests and run without selected tests – запускает все тесты, кроме выделенных в редакторе
Результат запуска этого теста (запуск осуществляется таким же способом, как и в предыдущем случае, с помощью метода Execute):

Как видите, у этого способа есть преимущество перед использованием утилиты командной строки: результаты показаны в привычном для пользователя TestComplete виде. Однако есть и недостаток: в случае использования этого метода необходимо сначала запустить тестовое приложение.
Подробнее о других видах юнит тестов (JUnit, DUnit и т.д.) можно прочитать в справке по TestComplete, раздел Unit Testing Project Item.
| Назад: 16 Ручное тестирование | Содержание | Дальше: 18 Полезные объекты TestComplete |