Тести є чудовим способом для забезпечення стабільних, перевірених
додатків. Вони служать в якості інтерактивної документації і дозволяють
змінювати код, не побоюючись порушити функціональність. Мова D
забезпечує зручний і рідний синтаксис unittest
, як частину
мови D. Блоки unittest
можуть бути використані для тестування
функціональності вихідного коду будь-де у межах модулів D.
// Блок для моєї функції
unittest
{
assert(myAbs(-1) == 1);
assert(myAbs(1) == 1);
}
Це уможливлює пряму розробку через тестування за необхідністю.
unittest
Блоки unittest
можуть містити довільний код, який компілюється і
запускається лише тоді, коли додано параметер -unittest
у командному
рядку при компіляції за допомогою компілятора DMD. DUB також має
опцію компіляції і запуску тестів через команду dub test
.
assert
Зазвичай, unittest
-и містять вирази assert
, які перевіряють
функціональність потрібної функції. Блоки unittest
зазвичай
розташовані поблизу реалізації функції, яка може бути або з самого
початку вихідного коду, або всередині класів чи структур.
Юніт тести є потужною зброєю для забезпечення куленепробивних додатків.
Загальною мірою при перевірці покриття програми за допомогою тестів
є покриття коду. Це співвідношення виконується всупереч існуючих
рядків коду. Компілятор DMD дозволяє легко створювати звіти
щодо покриття коду шляхом додавання опції -cov
. Файл .lst
, в якому
міститься детальна статистика, буде створений для кожного модуля.
Так як компілятор може вивести атрибути для шаблонного коду автоматично, є загальний патерн для додавання анотацій у юніт тести, щоб забезпечити атрибути для протестованого коду:
unittest @safe @nogc nothrow pure
{
assert(myAbs() == 1);
}