- 1
- 2
- 3
- 4
@Test(expectedExceptions = UnsupportedOperationException.class)
public void testGetRooms() {
dao.getRooms(null);
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+62
@Test(expectedExceptions = UnsupportedOperationException.class)
public void testGetRooms() {
dao.getRooms(null);
}
100% покрытие тестами
3.14159265 17.12.2012 19:32 # +1
Походу проверка контракта - кидать UnsupportedOperationException при передаче nullа.
bormand 17.12.2012 19:45 # +3
Сегодня вот как раз, быдлокодя прогу под ведро, налетел на баг с null'ом. Йода-сравнения строк и StringBuilder сующий в себя "null", если получит null, сделали свое грязное дело - пропустили null и не упали. В результате прога бесконечно читала readLine'ом строки из сокета (получая null), он успешно пролетал мимо всех проверок (на null я проверить как раз и забыл), и уходил на хранение в стрингбилдер. Когда в нем набирался гиг "nullnullnullnull.." прога падала с OutOfMemoryException...
Если бы я не был лентяем, и написал тест с null'ом для метода, принимающего строку - я бы увидел этот баг сразу. Так что не говно, 3.14159265 плюс, треду минус.
3.14159265 17.12.2012 19:52 # +2
Суть интерфейса - это контракт, и это поведение описано в документации.
Если реализуешь интерфейс - следуй соглашению и пиши юнит-тесты, которые это проверят.
Вот навскидку:
Collection.class
На каждое из 5-ти исключений нужен тест.
bormand 17.12.2012 20:22 # +1
Надо, обязательно надо... но всегда так трудно заставить себя писать тесты, когда есть вдохновление на написание кода...
3.14159265 17.12.2012 20:26 # +3
madhead 17.12.2012 21:53 # −1
getRooms(RoomTypeRequest r){
throw new UnsupportedOperationException("Operation is not implemented");
}
Хотя да: UnsupportedOperationException он для того и существует, чтобы указывать на такое, передали налл - кидай что-нить другое. Но даже если так: зачем проверять нереализованность метода? Вы полагаетесь на этот эксепшен в другом месте? Тогда скидывайте рядом тот код.
krypt 17.12.2012 22:31 # 0
http://ru.wikipedia.org/wiki/Разработка_через_тестирование
madhead 17.12.2012 22:35 # 0
krypt 17.12.2012 23:47 # +2
bormand 18.12.2012 06:05 # 0
[кэп]Затем, чтобы если его вдруг кто-то додумается реализовать, можно было это заметить и дописать еще тестов?[/кэп]