Твердження і добро alwaysAssert()
функція. ІМХО це важливіше, ніж одиничні тести, оскільки одиничні тести можуть виявляти помилки лише у конкретних випадках, які ви думали перевірити. Якщо той же програміст пише код і тести, він / вона, ймовірно, пропустить однакові крайові випадки в обох. Крім того, іноді тестування одиниць недоцільно, оскільки середовище, в якому функціонує компонент та / або дані, над якими він працює, є надто складним, щоб придумати надуманий тест.
Краса тверджень полягає в їх здатності документувати припущення та перевіряти їх на неоднозначних даних . Якщо будь-яке з цих припущень є неправильним, ваш код не працює голосно, замість того, щоб "працювати", але створюючи невірні неправильні результати. Він також не підходить до коріння проблеми, ніж без тверджень. На практиці, якщо ви явно заявляєте достатню кількість припущень щодо фрагмента коду, і всі ці припущення є правильними, код зазвичай є правильним.
Один із загальних зусиль щодо тверджень - це те, що їх можна вимкнути. IMHO у кожній мові або стандартній бібліотеці має бути alwaysAssert()
функція або грубо еквівалент, що робить те саме, що, assert
але не може бути вимкнено. Це може бути використано для перевірки припущень у критичних областях коду, які не мають ефективності, де переваги відключення відхилень незначні.