Подтвердить что ты не робот

Как я могу легко unit test код Blackberry?

Для моего университетского класса мы разрабатываем многопоточное приложение Blackberry, которое позволяет нам сканировать другие устройства, работающие с нашим приложением, с Bluetooth, а затем передавать файлы друг другу через TCP через интерфейс Wifi, реализовывать NAT-трафик, все во время регистрации нашего местоположения GPS. (Это RIM спонсировал класс компьютерных сетей в случае, если это еще не было очевидно.)

Я полюбил Test Driven Development и собирался использовать его для разработки моего домашнего задания. Тем не менее, любой класс Blackberry, который я продлеваю или называю другим во время тестирования, дает мне ClassFormatError из-за незаконных модификаторов. Я предполагаю, что эта ошибка вызвана тем, что банка с кодом Blackberry должна быть специально скомпилирована для их собственной JVM.

До сих пор я прибегал к использованию Proxy Pattern и реализации Макет объектов прокси. Однако это становится очень утомительным, поскольку я наследую от многих родных классов Blackberry.

Я также хотел бы избежать необходимости запуска симулятора Blackberry, если это возможно. Это может занять несколько минут, чтобы загрузить его, и это непрактично и раздражает для модульных тестов.

Есть ли простой способ unit test моего кода Blackberry?

4b9b3361

Ответ 1

Тестирование макета

Вы правильно поработали над макетированием, но я бы не советовал вам тестировать функциональность Blackberry на платформе J2SE. Я думаю, что прокси и макеты должны использоваться в том случае, если в исходном источнике нет данных тестирования, примеры:

"сканирование для других устройств" - нет других устройств, но вы хотите проверить функции сканирования
"TCP через интерфейс Wi-Fi" - вы хотите протестировать его на Storm (без WiFi)
"регистрация местоположения GPS" - местоположение устройства статично, но вы хотите проверить другие местоположения.

Затем вы можете имитировать такую ​​функциональность с помощью платформы Blackberry:
Макет местоположения BlackBerry GPS

Тем не менее вы можете воспроизводить класс API BlackBerry на J2SE с нуля, используя одни и те же имена и подписи. Это предполагает, что вы сами должны реализовать все функциональные возможности класса.

Тестирование j2me без симулятора

Это был бы отличный вариант, но до сих пор я не вижу, как это сделать.

Тестирование включает в себя запуск приложения, и это связано с симуляцией платформы. Может быть некоторая возможность проверить код j2me без использования всего симулятора UI, но я этого не знаю.

Что вы можете сделать, это проверить некоторые бизнес-логики на Java Standard Edition с минимальными изменениями кода.

Вам все равно нужно запустить тестирование функциональных возможностей платформы на симуляторе, но вы можете сделать это в одном приложении, которое будет представлять собой набор модульных тестов, например ChrisW. Просто запустите тестовые методы один за другим и выведите результаты на экране:
Method1 - Пройдено - 0.03 s
Метод2 - Пройдено - 1.30 с
Метод3 - пройден - 0.25 с

J2MEUnit

http://j2meunit.sourceforge.net/:

J2MEUnit - это Java 2 Micro Edition (J2ME), содержащей блок тестовая среда для J2ME Приложения. Он основан на исходный код оригинала JUnit, успешная модульная система тестирования для стандартное (настольное) издание Java, J2SE.

Тестирование устройств J2ME-приложений с помощью J2MEUnit и Eclipse
Краткое руководство по настройке и изучению J2MEUnit

JMUnit

http://jmunit.sourceforge.net/:

JMUnit - это структура unit test для Java ME (J2ME) на основе JUnit. В нем есть следующие функции:
- Работает как в эмуляторе Sun, так и на реальных устройствах.
- Маленький (тесты можно запускать даже на старых устройствах MIDP 1.0).
- Имеет исчерпывающий набор методов Assert для проверки теста неудачи.
- Поддерживаются как TestCases, так и TestSuites.
- Включает Ant задачи для запуска тестов JMUnit в непрерывной сборке.
- Имеет класс мониторинга производительности, вдохновленный JUnitPerf.

Запись и запуск тестов JMUnit

BUnit

Библиотека тестирования модулей для RIM Blackberry основан на jmunit

http://sourceforge.net/projects/b-unittesting/
Форумы сообщества поддержки BlackBerry: как выполнить модульное тестирование моего приложения Blackberry

Дополнительные

How To - автоматизировать тестирование с помощью BlackBerry Simulator

Ответ 2

когда я захотел выполнить тестирование кода Windows Mobile, я запустил их на эмуляторе/эмуляторе и/или на самом устройстве.

Это нецелесообразно, так как я не собираюсь запускать симулятор, который занимает почти минуту, чтобы загрузиться после выполнения каждого теста/функции.

Я мог бы загрузить его, загрузить на него программное обеспечение и запустить тест... оставьте его в рабочем состоянии... перезагрузите новое приложение на него без перезагрузки и запустите его. Может быть, Blackberry этого не позволяет?

Кроме того, я могу запустить целый набор тестов одним выстрелом (нет необходимости перезагружаться между каждым тестом/функцией). Может быть, это несовместимо с TDD, хотя, если ваша привычка:

  • Напишите тестовый пример
  • Запустите его, чтобы убедиться, что он не работает
  • Напишите реализацию
  • Запустите его еще раз, чтобы убедиться, что оно выполнено успешно.
  • (повторите, как описано выше для следующей функции, которая будет реализована)

Это может случиться. Драйверы устройств, например: утомительно для отладки, потому что системе может понадобиться каждый раз загружаться, потому что они зависают системой, если они багги, потому что отладчик не является дружественным к пользователю... такие среды меньше взаимодействуют, поэтому больше внимания уделяется:

  • Как правильно сделать первый раз (так что вам не нужно отлаживать)
  • Внедрение (и запись тестов для и последующего тестирования) больших (возможно, целых) фрагментов функциональности сразу