|
ICEberg
|
|
Unit тесты04.01.2011, 16:19. Показов 5508. Ответов 14
Метки нет (Все метки)
Доброе время суток!
Хочу попросить сторонников и противников Unit тестирования высказать свое мнение по этому поводу. Какие негативные позитивные стороны в этом подходе? Почему его стоит не стоит применять. Спасибо. |
|
| 04.01.2011, 16:19 | |
|
Ответы с готовыми решениями:
14
Unit-тесты Unit тесты Тесты и бд |
|
3 / 3 / 0
Регистрация: 25.08.2010
Сообщений: 213
|
|
| 04.01.2011, 17:19 | |
|
Негативный подход - человеческий фактор. А именно юнит тест - это тестирование компонентов, но если у тебя работают все компоненты, то это не значит что и система без багов. К тому же второй негативный фактор - хорошо протестить компонент - повторноеисполнение методов, а также их поведение при граничных значениях.
Положительные стороны: при качественном составлении тестиров можно быть уверенным что твои компоненты работают правильно. То есть при каких-то багах ищешь ошибку в логике или взаимосвязях, но не в самих компонентах, что соответственно сужает область поиска ошибки, что ведет к ее скорейшему устранению. Лично мое мнение - двумя руками за. Использую и очень доволен. Времени немного занимает, зато мелкие и самые пакостные ошибки видны сразу. PS стоит также применять совместно с такими тулами (JUnit я полагаю) еще test coverage тулы - они показывают процент покрытия тестов кодами. То есть помогает увидеть все ли куски компонент корректно протестированы.
0
|
|
|
paradise
|
|
| 05.01.2011, 09:12 | |
|
Если не трудно, подкиньте реальный (читай не абстрактный) пример тестирования. Пример, который был написан не ради примера.
|
|
|
4 / 4 / 1
Регистрация: 13.08.2008
Сообщений: 931
|
||||||
| 05.01.2011, 10:42 | ||||||
|
ну держи, если не шутишь
пару методов попроще, на самом деле в этом классе тестов около 20:
0
|
||||||
|
ICEberg
|
|
| 05.01.2011, 12:07 | |
|
2 mr_dronski:
а ты не мог бы детальнее рассказать о тех 5 уровнях? |
|
|
ICEberg
|
|
| 05.01.2011, 12:12 | |
|
2 mr_dronski:
и вообще... что тебе это дает? Ведь ты тратишь время на этот код. В чем эффект? По какому критерию ты отбираеш то, что нужно тестить... Ведь очевидно, что существуют классы, которые в связи со своей простотой не нуждаются в тестировании. |
|
|
4 / 4 / 1
Регистрация: 13.08.2008
Сообщений: 931
|
|
| 05.01.2011, 12:33 | |
|
про уровни очень хорошо сказано в JUnit in Action (functional, integration, unit, acceptance, etc.).
ессно, не стоит тестировать простые методы. но простые - это get/set без логики. политика такая - если у вас нет теста, подтверждающего, что при данном input вы получаете ожидаемый output, то функционала фактически нет. что дает? вам я привел простой пример теста выше. теперь представьте, что у вас 1000 классов и изменения малейших деталей могут повлечь за собой последствия, о которых вы просто не узнаете, а узнает ваш клиент в продакшн системе (пи'№;ц всем, короче). это дает уверенность при рефакторинге. unit tests - всего лишь минимальный уровень тестирования. времени отнимает немного, но это единоразовое вложение времени окупается сполна. теперь представьте более тяжелый случай интеграционных тестов - тестируем Struts в связке с EJB контейнером и database. тут уже нужно подготовить данные перед тестом, прогнать testcase, сравнить, что же на самом деле произошло в базе. DBUnit + StrutsTestCase отлично справляются с этой задачей. думаю, идея уже яснее стала. да и дисциплина повышается, не говоря уже о качестве системы. про философию можете в книге, упомянутой выше почитать - лучше, чем там, сложнее объяснить.
0
|
|
|
ICEberg
|
|
| 06.01.2011, 11:22 | |
|
Великолепно! Дабу ощутить всю мощь, я принялся тестировать. Это все конечно очнь корошё, но как быть с private методами? Ведь в методе setUp() просто создается экземпляр тестируемого класса. Соотв. к приватным методам не доберешся. Как поступить в данном случае? Может я делаю что-то не так?
|
|
|
4 / 4 / 1
Регистрация: 13.08.2008
Сообщений: 931
|
|
| 06.01.2011, 12:09 | |
|
вообще-то есть способ, но такие закрученные, что не стоят того (в NetBeans был плагин для тестирования таких методов через динамическое создание внутренних статических классов в тестовом классе).
прикиньте сами - если метод private, значит он предназначается только для данного класса. есть методы, которые его будут использовать, их и тестируйте. если нет, тогда метод на самом деле должен быть protected (обычно это гибче, чем private). а с тестированием таких методов никаких проблем нет. необходимое условие - тест должен находиться в том же пакете (это не проблема, если иерархия ваших тестов копирует иерархию тестируемых классов).
0
|
|
|
paradise
|
|
| 07.01.2011, 11:19 | |
|
Если я правильно понял, тестирование класса дает ответ на вопрос: 'Изменилось ли что-то в работе класса с внешней стороны?'.
Другими словами: 'Не нарушен ли контракт между поставщиком класса и тем, кто этот класс использует?' При этом нет смысла тестировать private методы, так же как и количество и типы переменных... Все это не входит в контракт. |
|
|
paradise
|
|
| 09.01.2011, 10:38 | |
|
>про уровни очень хорошо сказано в JUnit in Action (functional, integration, unit, acceptance, etc.).
Может и ссылкой поделитесь? |
|
|
paradise
|
|
| 09.01.2011, 15:37 | |
|
Нашел здесь:
ftp://194.85.41.42/BOOKS |
|
|
paradise
|
|
| 09.01.2011, 15:39 | |
|
Прямая ссылка:
http://vf.bseu.by/stas/Junit%20In%20Action.rar |
|
|
0 / 0 / 0
Регистрация: 28.08.2010
Сообщений: 42
|
|
| 20.01.2011, 10:07 | |
|
Испoльзуем Spring framework в прoекте, нужнo прoтестирoвaть facade - business manager метoды, причем в oснoвнoм нa select - create, delete and update крaине редки. Есть схемa с тестoвыми дaнными в Oracle. Вoпрoс стoит тaк: пoмoжет ли мне dbUnit, пoдгoтoвить mock objects вытaщив их из бaзы? Пoкa чтo я увидел,чтo object тaм предстaвлен oбычнoй стрoкoй, кaк в бaзе. Т.е. если у меня слoжныи oбйецт, тoгдa пиши ручкaми тoнны кoдa нa инитиaлизaцию всеи гирлянды етoгo mock objecta. Другaя aлтернaтивa: срубить mockContext.xml file, в кoтoрoм oписaтъ mock objects сoглaснo требoвaний Spring. Вызывaи любoй mock object пo alias, не нaписaв ни стрoчки Java кoдa. Oднo плoхo: mockContext.xml дoлжен быть синхрoнизирoвaн с кoнтентoм test Oracle data. Пoдскaжите пo dbUnit, если ктo егo юзaл, стoит мне с ним связывaтъся или нет?
Thanks in advance...
0
|
|
|
4 / 4 / 1
Регистрация: 13.08.2008
Сообщений: 931
|
|
| 20.01.2011, 10:52 | |
|
зависит, конечно, от сложности проекта и ресурсов, которыми вы располагаете.
если вы уверены в том, что этап кода->база работает без проблем (скажем, O/R mapping делает контейнер), то в вашем сетапе dbUnit не много добавит. однако, когда вы уже пишете интеграционные тесты, то очень помогает. скажем, существуют проблемы с автоматическим тестированием web страниц, но если вы, скажем, используете StrutsTestCase, то получается неплохая связка именно для такого тестирования. dbUnit может работать и по живой базе (добавить записи перед тестом, удалить после), и на чистой (удалить все записи, добавить тестовые, удалить после). идея вся в том, хотите ли вы тестировать участок между кодом и базой. если нет, то dbUnit не стоит, наверное, использовать, а тестировать business layer с mock'ами.
0
|
|
| 20.01.2011, 10:52 | |
|
Помогаю со студенческими работами здесь
15
Тесты в JAVA JUnit тесты Тесты на java Тесты по Java Python unit tests в maven Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2.
Данный документ берёт данные из другого нетипового документа. . .
|
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
|
|
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать программный контроль на предмет проведения документа. . .
|
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача:
1. Реализовать контроль заполнения реквизита. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|