Как юнит-тесты могут использовать классы SmartGWT? - PullRequest
1 голос
/ 02 марта 2012

В нашем веб-приложении SmartGWT мы передаем наши доменные объекты с сервера клиенту и обратно (через сериализацию GWT). Чтобы показать / отредактировать данные на стороне клиента в DynamicForm или GridList, мы должны преобразовать их в Record (или ListGridRecord ) и после редактирования обратно в объекты нашего домена.

Я хотел бы написать модульный тест для этого метода преобразования, но простая попытка в JUnit не удалась, так как записи getAttribute и setAttribute* Методы 1014 * реализуются с помощью JSOHelper.getAttribute / JSOHelper.setAttribute, которые являются статическими методами, объявленными как native и реализованными JSNI в JavaScript, таким образом, их можно использовать только на стороне клиента, при компиляции в JavaScript.

Мы получаем UnsatisfiedLinkError при использовании этих методов из JUnit, поскольку нативные методы там не реализованы.

Есть идеи, как я могу проверить эти классы?

Эти критические методы могут быть легко реализованы с помощью простого HashMap (или, может быть, LinkedHashMap, если важен порядок атрибутов) - на самом деле объект JavaScript - это то, что касается только части данных, а не методов. Поэтому я просто думаю о предоставлении альтернативной реализации некоторых выбранных классов SmartGWT (в основном, JSOHelper) с реализациями Java вместо JavaScript.

Но я действительно первый, у кого есть эта проблема? Я просто слишком глуп, чтобы найти существующее решение?

1 Ответ

0 голосов
/ 03 марта 2012

Если вы использовали шаблон MVP или MVC в своем коде, просто смоделируйте код представления чем-то вроде mockito и протестируйте все остальное приложение.Чтобы протестировать код представления, вам нужно использовать что-то вроде Selinium Я не думаю, что gwtTestCase будет работать с smartGWT, так как это всего лишь оболочка gwt вокруг кода js.

...