Първо, за да може единичен тест да достигне до assert
(или ASSERT
или _ASSERT
или _ASSERTE
при компилации на Windows), единичният тест ще трябва да изпълни тествания код с компилацията за отстраняване на грешки.
Предполагам, че това може лесно да се случи на машината на програмиста. За нашите нощни компилации, ние изпълняваме само модулните тестове в конфигурацията на изданието, така че няма притеснения относно твърденията там.
Второ, може да се приеме нормативният подход с твърдения --
Утвържденията имат за цел да гарантират, че определени условия/инварианти са винаги валидни по време на жизнения цикъл на програмата. Или по-точно, за да гарантираме, че ако такова условие бъде нарушено, ние ще разберем за него възможно най-скоро, възможно най-близо до основната причина за проблема.
В този случай нито един модулен тест не трябва да повдига твърдение, тъй като извикването на кода по начин, по който се повдига твърдение, не трябва да е възможно.
или човек може да приеме „прагматичния“ подход с твърдения:
Нека разработчиците разпръснат ASSERT навсякъде за сценарии „не правете това“ и „неприложени“. (И можем да спорим цял ден дали това е грешно™ или правилно™, но това няма да доведе до предоставяне на функциите.)
Ако възприемете прагматичния подход, тогава единичен тест, който удря твърдение, означава, че единичният тест е извикал кода по начин, който не се напълно поддържа от кода. Това просто може да означава, че кодът "не прави нищо" в компилация на версия или може да означава, че кодът се срива в компилация на версия или може да означава, че кодът прави "нещо интересно".
Ето опциите, за които е известно, че използвам:
- Ако твърдението е придружено от допълнителна проверка, за да направи извикването „безобидно“, направете теста на модула тест за твърдението (в отстраняване на грешки) и за „безвредно“ условие при освобождаване.
- За сривове или „нещо интересно“ или няма единичен тест, който да има смисъл, или можете да направите единичен тест „само за отстраняване на грешки“, който тества дали наистина получавате твърдение (макар че не съм толкова сигурен, че е полезно).
person
Martin Ba
schedule
22.11.2011