Assertion based examples
Рубрика: Development, Groovy, Java | 24 April 2007, 15:25 |
Vadim Voituk
Достаточно интересный метод демонстрации примеров нашел в книге “Groovy in Action“.
Суть состоит в том, что Dierk-Koenig, в отличии от принятого стиля оформления примеров:
“Вот код, а вот текст/скриншот того, что получается в результате”
или же
“А теперь мы напишем программу с ипользованием цикла while и посмотрим что она выведет на экран”, использует утверждения (assertions) прямо в коде примера.
Причем всегда строит assert-выражение таким образом, чтоб результат был true.
Например:
[java]assert 1=1 assert "Java & the Groovy"=="Java & the Groovy" // Именно так, потому как в Groovy сравнение проходит по значению[/java]
или
[java]def nick = 'Gina' def book = 'Groovy in Action' assert "$nick is $book" == 'Gina is Groovy in Action'[/java]
или
[java]def list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
list.each() { item ->
assert item == list[item]
}[/java]
Получаются такие себе микро-тесты без тест-фреймворка.
В результате “правильная” программа-пример не выведет на экран ничего.
Такой подход мне кажется куда более удобным, потому как читателю нет необходимости создавать программу из примера или же догадываться о результатах той или иной операции.
Tweet
Полностью согласен. Тоже читаю GINA и получаю удовольствие от процесса. И это несмотря на херовое знание языка. а assert – это имхо вообще достойная вещь. Мне показалось, что можно действительно без тестового каркаса подкреплять код элементами “контроля правильности”…
невольно заметил, что сам стал применять…
И все-же assert-ы никак не смогут заменить какой-нить JUnit, и были добалены в Java скорее как средство локализации ошибок.
Я то сам никак не могу заставить писать себя assert-ы, потому что мыслю ещё в терминах unit-тестов: “Вот тут надо написать unit-test, но так-как этот метод простой и нет желания что-либо дописывать – ну его впень…”
А похорошему надо бы написать простенький assert.