![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
а я вот что понял
Я первый год в Америке кюеем работал. В те поры девелоперы тестов не писали, это им было западло. И я валял кучу всяких тестов (большинство пойманных мной багов пережили крах Борланда, и теперь живут на небесах). Но следующие шесть лет в Борланде я имел репутацию Этого Странного Кюея. Это там была порядочная толпа идиотов (ну, какие полиформизмы бывают, не знают, но спорить с ними бесполезно, т.к. ты Странный Кюей, а он аж Старший Инженер). Хрен с ними; была и масса больших талантов. Некоторые из них сейчас в колледжах преподают программирование, а кто-то в автогонщики подался; кто-то умер; одна пошла выучилась на врача.
Так вот только недавно я начал понимать, какой это был (бес)ценный опыт. Потому что обычные программисты, без опыта тестирования - они вроде юзеров. Тыкают пальчиком, вдруг заработает.
Не, я не предлагаю ссылать в кюеи на год (да и дураков нет, они пойдут в другую контору, где их будут ценить). Но чисто для себя.
Ну это как, пойдя в матросы, лучше научиться уже плавать, заранее, а не когда на море качка.
Re: Unit tests for null and negative values?
Если мы ожидаем null, как один из нормальных результатов - придется писать код для этого случая.
И расширять unit test [with null value test case].
> Рассчитывать, что все наши параметры адекватные? Я не возражаю, если просто бросать исключение.
Именно так: если метод не поддерживает какой-то диапазон - throw exception.
Тогда и unit test для такого случая не нужен.
И если этот exception случается - значит нужно дописывать код.
Re: Unit tests for null and negative values?
"Бросать эксепшен" - это только одно из возможных решений. Вполне приемлемое, но не единственное. Но ты ж не знаешь, оно бросит эксепшен или вернет дату обрезания Христа.
Re: Unit tests for null and negative values?
Да, но только если это неожиданное событие произойдет.
> или вернет дату обрезания Христа
Кто "вернет дату обрезания Христа"?
Re: Unit tests for null and negative values?
Программа. Дату не распарсили, возвращаем 01.01.0001.
Re: Unit tests for null and negative values?
Обычно лучше, если программа throws an exception если распарсить не получается.
Либо какой-нибудь сигнал о том, получилось ли распарсить.
Re: Unit tests for null and negative values?
Да уж всяко лучше.
Re: Unit tests for null and negative values?
Re: Unit tests for null and negative values?
The obvious fix is to extend functionality to support that new date edge case (years 2000+).
Re: Unit tests for null and negative values?
Re: Unit tests for null and negative values?
I suggest to throw in case of null [as a default choice in version 1 of the software].
> if you don't test that the method throws on invalid inputs, you are in the same boat as Y2K
1) If I have throwing code, the "throw" part is likely to work even if I do not have unit tests that check for that "throw" behavior.
2) Being "in the same boat as Y2K" -- is not the worst place to be.
That software with Y2K holes in it -- generated a lot of revenue over 10-30 years prior to Y2K event.
Re: Unit tests for null and negative values?
"generated a lot of revenue" - like! (but not 30 years prior, not even 20)
Re: Unit tests for null and negative values?
Do you mean that almost no software that was working in 1999 was written prior to 1980?
Re: Unit tests for null and negative values?
I mean that nobody worried about Y2K in 1970 or in 1980.
30 years prior to Y2K
Yes.
They worried about creating working product and growing sales.
Then a tiny slice products that survived until 2000 -- had to be patched (Y2K).
Re: Unit tests for null and negative values?
Let's check it 16 years from now.
Re: Unit tests for null and negative values?
Re: Unit tests for null and negative values?
We sure will. Passing around dates as longs is ubiquitous.