- 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% покрытие тестами
Походу проверка контракта - кидать UnsupportedOperationException при передаче nullа.
Сегодня вот как раз, быдлокодя прогу под ведро, налетел на баг с null'ом. Йода-сравнения строк и StringBuilder сующий в себя "null", если получит null, сделали свое грязное дело - пропустили null и не упали. В результате прога бесконечно читала readLine'ом строки из сокета (получая null), он успешно пролетал мимо всех проверок (на null я проверить как раз и забыл), и уходил на хранение в стрингбилдер. Когда в нем набирался гиг "nullnullnullnull.." прога падала с OutOfMemoryException...
Если бы я не был лентяем, и написал тест с null'ом для метода, принимающего строку - я бы увидел этот баг сразу. Так что не говно, 3.14159265 плюс, треду минус.
Суть интерфейса - это контракт, и это поведение описано в документации.
Если реализуешь интерфейс - следуй соглашению и пиши юнит-тесты, которые это проверят.
Вот навскидку:
Collection.class
На каждое из 5-ти исключений нужен тест.
Надо, обязательно надо... но всегда так трудно заставить себя писать тесты, когда есть вдохновление на написание кода...
getRooms(RoomTypeRequest r){
throw new UnsupportedOperationException("Operation is not implemented");
}
Хотя да: UnsupportedOperationException он для того и существует, чтобы указывать на такое, передали налл - кидай что-нить другое. Но даже если так: зачем проверять нереализованность метода? Вы полагаетесь на этот эксепшен в другом месте? Тогда скидывайте рядом тот код.
http://ru.wikipedia.org/wiki/Разработка_через_тестирование
[кэп]Затем, чтобы если его вдруг кто-то додумается реализовать, можно было это заметить и дописать еще тестов?[/кэп]