Я хотів запитати вас, у яких випадках має сенс випробувати тест на статично набраний функціональний код, написаний у haskell, scala, ocaml, nemerle, f # або haXe (останнє - це те, що мене справді цікавить, але я хотів скористайтеся знаннями великих громад).
Я прошу це тому, що з мого розуміння:
Одним з аспектів одиничних тестів є наявність специфікацій у виконанні. Однак при використанні декларативного стилю, який безпосередньо відображає формалізовані специфікації для семантики мови, це навіть на самому ділі можна висловити специфікації в працездатною формі в окремому шляху, який додає значення?
Більш очевидний аспект одиничних тестів полягає у виявленні помилок, які неможливо виявити за допомогою статичного аналізу. Зважаючи на те, що безпечний функціональний код типу є хорошим інструментом для кодування, надзвичайно близького до того, що розуміє ваш статичний аналізатор, здається, що ви можете перенести багато безпеки на статичний аналіз. Однак просту помилку, як-от використання
x
замістьy
(обидві - координати) у вашому коді, неможливо покрити. ОТОХ така помилка могла виникнути і під час написання тестового коду, тому я не впевнений, чи варто докладати зусиль.Одиничні тести вводять надмірність, це означає, що при зміні вимог код, що реалізує їх, і тести, що охоплюють цей код, повинні бути змінені. Це, звичайно, йде про постійне значення, тому можна стверджувати, що це насправді не має значення. Насправді, у таких мовах, як Ruby, це насправді не порівнюється з перевагами, але враховуючи те, як статично набране функціональне програмування охоплює багато тестів наземного блоку, здається, що його постійні накладні витрати можна просто зменшити без штрафу.
З цього можу зробити висновок, що тестові одиниці в цьому стилі програмування дещо застаріли. Звичайно, така заява може призвести лише до релігійних війн, тому дозвольте мені звести це до простого питання:
Коли ви використовуєте такий стиль програмування, для яких розширень ви використовуєте одиничні тести та чому (яку якість ви сподіваєтесь отримати для свого коду)? Або навпаки: чи є у вас критерії, за якими ви можете кваліфікувати одиницю статично набраного функціонального коду як охопленого статичним аналізатором і, отже, без необхідності покриття тестових одиниць?