|
0 / 0 / 1
Регистрация: 16.11.2014
Сообщений: 85
|
||||||||||||||||||||||||||||||||||||
Junit and Mockito тесты18.05.2016, 14:22. Показов 3447. Ответов 18
Метки нет (Все метки)
Добрый день
Мне тут задали некоторое небольшое задание сделать. Почти сделел только остались тесты. Но мне нужен взгляд со стороны. Мне кажется что сделоно неплохо но явно чего-то не хватает. Кину задание ну и мою реализацию. Можите одним глазком посмотреть. Задание: Implement a simple point of sale. Assume you have: – one input device: bar codes scanner – two output devices: LCD display and printer Implement: – single product sale: products bar code is scanned and: – if the product is found in products database than it's name and price is printed on LCD – if the product is not found than error message 'Product not found' is printed on LCD – if the code scanned is empty than error message 'Invalid bar-code' is printed on LCD – when 'exit' is input than receipt is printed on printer containing a list of all previously scanned items names and prices as well as total sum to be paid for all items; the total sum is also printed on LCD display Rules: – use only SDK classes and your favorite test libraries – mock/stub the database and IO devices – concentrate on proper design and clean code, rather than supplying fully functioning application Реализация: Класс SalePoint
Как на ваш взгляд что нужно доделать или переделать? Да и по поводу тестирования пока смог написать только это:
0
|
||||||||||||||||||||||||||||||||||||
| 18.05.2016, 14:22 | |
|
Ответы с готовыми решениями:
18
JUnit тесты JUnit. Как написать тесты, работающие с БД JUnit тесты. Параметры в тестовом методе |
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
||
| 18.05.2016, 16:21 | ||
|
Зачем вы БД прикрутили сюда? Вам прямым текстом написано использовать стаб БД. Причем тут вообще мокито и джюнит в названии темы если вы хотите мнения про код? Тест единственный что есть тоже ни о чем. Как вы вообще все это запускаете? Где мейн?
0
|
||
|
0 / 0 / 1
Регистрация: 16.11.2014
Сообщений: 85
|
|
| 18.05.2016, 17:44 [ТС] | |
|
Можите кратко описать как должно все быть? Я по поводу ООП и архитектуры приложения.
0
|
|
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
| 18.05.2016, 17:55 | |
|
Lokki23, давайте лучше наоборот. Вы напишите дизайн с описанием классов, flow chart и class diagram а я посоветую что где подправить и улучшить
0
|
|
|
0 / 0 / 1
Регистрация: 16.11.2014
Сообщений: 85
|
|
| 18.05.2016, 18:35 [ТС] | |
|
Хорошо.
0
|
|
|
0 / 0 / 1
Регистрация: 16.11.2014
Сообщений: 85
|
|
| 19.05.2016, 02:16 [ТС] | |
|
Пока набросал только flowChart диагаму.
0
|
|
|
0 / 0 / 1
Регистрация: 16.11.2014
Сообщений: 85
|
||||||
| 19.05.2016, 02:30 [ТС] | ||||||
|
Не имею опыта в рисовании диагарам. Так что выглядит она довольно убого.
Не знаю что и какие методы реализовать в salePoint. Если правильно рассуждаю то когда на входе в Сканере есть сигнал то мы его обрабатываем. То есть нужно зациклить или нет?
0
|
||||||
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
| 19.05.2016, 08:29 | |
|
Lokki23, flowChart неплохо было бы написать с использованием уже ваших классов из диаграмы.
Уже по диаграме видно где можно улучшить. У вас есть монитор и принтер. Они оба устройства вывода. Логично бы было создать интерфейс устройства вывода и работать с ним чтобы программа была более гибкой и можно бы было легко заменить устройство вывода. Так же можно поступить и с устройством ввода. И с базой данных. То есть ваша программа (класс сейлпоинт) должна как можно больше работать с интерфейсами. Таким образом поменять хранилище продуктов, устройства ввода\вывода будет легко. Так же такую архитектуру будет легко тестировать.
0
|
|
|
0 / 0 / 1
Регистрация: 16.11.2014
Сообщений: 85
|
||||||
| 19.05.2016, 16:19 [ТС] | ||||||
|
Так пойдет?
Да а как сделать тесты? Например использовать стаб БД? И в PointSale:
0
|
||||||
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
| 19.05.2016, 16:29 | |
|
Lokki23, вам в вашем решении вообще ненужна БД. Забудьте про неё. Почему интпуд девайс у вас обладает методом write и методом hasNext? Девайс должен только получать на вход баркод и возвращать продукт или выбрасывать исключение если произошла ошибка
0
|
|
|
0 / 0 / 1
Регистрация: 16.11.2014
Сообщений: 85
|
|
| 19.05.2016, 16:58 [ТС] | |
|
У меня метод write - это вход.
Просто я думал следующим образом: 1) Input Device считует баркод(метод write(barcode:string)) 2) Потом с каласа PoinSale мы проверяем есть ли считаный бар-код и делаем что-то.... - исчим в базе продукт пишем на екране ну и принтере. Просто я думаю что inputdevice не должен иметь доступ к базе наших продуктов, а только класс PoinSale?
0
|
|
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|||
| 20.05.2016, 14:18 | |||
|
Вы знакомы с шаблонами проектирования? Неплохо было бы почитать и применять
0
|
|||
|
0 / 0 / 1
Регистрация: 16.11.2014
Сообщений: 85
|
||||||
| 20.05.2016, 17:46 [ТС] | ||||||
|
Ну ок.
Хотел спросить о тестировании. Можно ли каким-то образом получить доступ к объекту? Например:
Как можна протестить это дело?
0
|
||||||
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|||
| 20.05.2016, 20:13 | |||
|
0
|
|||
|
0 / 0 / 1
Регистрация: 16.11.2014
Сообщений: 85
|
||||||||||||||||
| 20.05.2016, 22:17 [ТС] | ||||||||||||||||
|
Ну а если так?
0
|
||||||||||||||||
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
| 21.05.2016, 01:36 | |
|
Lokki23, у вас какая то каша в голове и из за этого в коде. Зачем вы в мейн понапихали моков всяких? Зачем вы писали дизайн если не делаете по нему? Сдавайте вообщем как есть. На вашем уровне понимания пока что лучше вряд ли выйдет
0
|
|
|
0 / 0 / 1
Регистрация: 16.11.2014
Сообщений: 85
|
|
| 21.05.2016, 14:43 [ТС] | |
|
Последний вопрос как сделать это – mock/stub the database and IO devices?
0
|
|
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
| 21.05.2016, 22:16 | |
Сообщение было отмечено Lokki23 как решение
Решение
Lokki23, имеется в виду не подключать реальную БД, а написать какой нибудь класс который будет выдавать продукты. В классе Map держите какой-нибудь и из него выдавайте.
1
|
|
|
0 / 0 / 1
Регистрация: 16.11.2014
Сообщений: 85
|
|
| 21.05.2016, 22:51 [ТС] | |
|
Ясно. Спасибо за уделенное время.
0
|
|
| 21.05.2016, 22:51 | |
|
Помогаю со студенческими работами здесь
19
Junit тесты: как правильно реализовать проверку метода findAll? JUnit тесты На могу запустить Mockito
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|