Vim по повній: Тестування за допомогою xUnit

Зміст
  1. Введення (vim_lib)
  2. Менеджер плагінів без фатальних вад (vim_lib, vim_plugmanager)
  3. Рівень проекту та файлова система (vim_prj, nerdtree)
  4. Snippets та шаблони файлів (UltiSnips, vim_template)
  5. Компіляція і виконання чого завгодно (vim-quickrun)
  6. Робота з Git (vim_git)
  7. Деплой (vim_deploy)
  8. Тестування за допомогою xUnit (vim_unittest)
  9. Бібліотека, на якій все тримається (vim_lib)
  10. Інші корисні плагіни
Мені ще не доводилося працювати в компаніях, які тестують свій код так, як це належить робити для подальшого супроводу і рефакторинга. У Росії навіть великі IT компанії уникають процес модульного тестування, не кажучи вже про загальносистемному, що призводить до тоннам затхлого та скам'янілого коду. Так, я вважаю, що досліджуваний код, це якісний код, але чому ж люди цього уникають? Як я зрозумів, причини дві:
  • Незнання методологій та інструментів тестування
  • Складність у запуску тест-випадків (test case)
Перша проблема поза теми цієї статті, а ось другу, особливо для користувачів редактора Vim, я постараюся тут вирішити.

Все та ж універсальність
Якщо ви читали мою статтю про плагіні vim_deploy, то структура vim_unittest здасться вам знайомою. Даний плагін це лише уніфікований інтерфейс доступу до різних утиліт, призначених для модульного тестування. Для роботи йому необхідний конкретний адаптер, який надасть прикладну логіку для взаємодії з утилітами. На ділі це означає наступне:
  • Ви встановлюєте собі vim_unittest і один, або кілька адаптерів для нього, таких як vim_unittest_phpunit
  • Ви використовуєте команди vim_unittest або гарячі клавіші для тестування проекту або конкретних модулів, при цьому абсолютно прозоро для користувача буде використана та утиліта, яка налаштована для поточного проекту
На ділі це означає, що ви можете працювати відразу з декількома проектами і використовувати одні і ті ж команди (гарячі клавіші) для їх тестування не залежно від того, які утиліти тестування в них використовуються.

Плагіни vim_unittest і vim_deploy на стільки схожі, що я навіть копипастил частину тексту з попередньої статті, змінюючи пару слів. Пробачте, звичайно.
Використання
Розглянемо приклад використання даного плагіна з адаптером vim_unittest_phpunit. Як вже було сказано вище, спочатку потрібно встановити vim_unittest і будь-адаптер для роботи з утилітами тестування. Так само слід налаштувати утиліту тестування, згідно вашим вимогам. У моєму випадку, це були файли:
phpunit.xml
<?xml version="1.0" encoding="UTF-8"?>
<phpunit
bootstrap="Bootstrap.php"
backupGlobals="false"
>
<testsuites>
<testsuite name="Test Suite">
<directory>./MyTest</directory>
<directory>./DbTest</directory>
</testsuite>
</testsuites>
</phpunit>


Bootstrap.php
<?php
define('IN_TEST', true);
require_once '../init.php';

if(!defined('CURRENT_LANGUAGE')){
define('CURRENT_LANGUAGE', 'ru');
}


Після цього потрібно додати в ваш файл .vimrc наступні налаштування:
let g:vim_unittest#options = {'testDir': 'адреса каталогу з тестами щодо кореня проекту', 'adapter': 'phpunit'}

і створити самі тести у вигляді окремих файлів, наприклад таких:
ExampleTest.php
<?php
namespace Test;

class ExampleTest extends \PHPUnit_Framework_TestCase{
public function testFirst(){
$this->assertTrue(1 == 1);
}
}


На цьому все. Для запуску тестів використовуються три команди:
  • UnitTestRun — запуск всіх тестів проекту
  • UnitTestRunFile — запуск тестів в окремому файлі
  • UnitTestRunCurrentFile — запуск тестів в поточному файлі
  • UnitTestRunCurrentTest — запуск тесту, на ім'я якого встановлено курсор (на імені методу тестуючого класу)
Звичайно їх слідують забиндить і запускати однією клавішею.

Плагін вміє не тільки запускати тести, але і відображає висновок використовуваних утиліт в окремому вікні, а адаптери забезпечують значення для опції errorformat так, щоб можна було швидко переходити по стеку викликів, що привели до помилки.
Приклад

Поки всі
Так як більшість утиліт модульного тестування мають схожий інтерфейс, їх легко підключити до vim_unittest. Якщо ви ще не тестуєте ваш код, не пошкодуйте на це часу, вам подякують ті, хто буде підтримувати його після вас (або разом з вами).

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.