2012-03-02 2 views
1

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

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

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

Любые идеи, как я мог тестировать эти классы?

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

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

+0

Связанный (но на самом деле не помогает здесь): [GWT: Лучшая практика для модульного тестирования/издевательских методов JSNI?] (Http://stackoverflow.com/questions/2543462/gwt-best-practice-for-unit -testing-mocking-jsni-methods) –

ответ

0

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

+0

Мы используем MVP, но этот класс, который я хочу протестировать, на самом деле является частью представления (или может рассматриваться как таковой). Это касается только чистых классов данных (без GUI), но классов данных, представленных объектами JavaScript, что является проблемой здесь. –

+0

Возможно, вы можете написать java-версию методов, которые не разрешены. – Deanna

+0

Да, это была моя идея, но я надеялся, что кто-то еще это сделал, поэтому мой вопрос здесь. –

Смежные вопросы