Интеграционный тест Griffon или скрипт, отображающий Griffon View

Когда я создаю плоские компоненты Java Swing, такие как диалоговые окна и т. д., очень легко выполнить модульный тест для отображения диалогового окна. По сути, я могу просто создать экземпляр диалога и вызвать setIsVisible(true). Мне очень трудно понять, как это сделать с помощью Griffon View. Я пытался сделать это с помощью интеграционных тестов, но у меня не получается.

Я пробовал несколько вещей, чтобы показать представление, и ничего не работает. Кажется, единственный способ получить экземпляр представления: AirplaneView view = helper.newInstance(app, griffonpractice.AirplaneView.class, "Airplane")

После этого я подумал, что смогу сделать view.setIsVisible(true) or view.frame.setIsVisible(true), но не повезло. Я предполагаю, что думаю об этом неправильно, должен быть довольно простой способ сделать это. Любая помощь приветствуется. Мое представление выглядит следующим образом, обратите внимание, что привязок нет, поэтому мне не нужно ничего издеваться.

package griffonpractice
import javax.swing.JFrame

JFrame frame = application(title: 'GriffonPractice',
  size: [320,480],
  pack: true,
  location: [50,50],
  locationByPlatform:true){
    borderLayout()
    {
        hbox(constraints: BL.NORTH)
        {
            label(text: "shane")
            label(text: "Jack");
        }
    }
}

person GNSL    schedule 12.10.2010    source источник


Ответы (1)


Вы пробовали использовать FEST? http://easytesting.org

В книге Griffon в действии есть подробный пример тестирования приложения Griffon с помощью FEST, исходный код доступен по адресу http://code.google.com/p/griffoninaction/source/browse/trunk/chap09/dictionary

Вот краткий пример из 3 тестов для простого приложения

package dictionary

import org.fest.swing.fixture.*
import griffon.fest.FestSwingTestCase

class DictionaryTests extends FestSwingTestCase {
    void testInitialState() {
        window.button('search').requireDisabled()
    }

    void testWordIsFound() {
        window.with {
            textBox('word').enterText('griffon')
            button('search').click()
            textBox('result')
                .requireText('griffon: Grails inspired desktop application development platform.')
        }
    }

    void testWordIsNotFound() {
        window.with {
            textBox('word').enterText('spock')
            button('search').click()
            textBox('result')
                .requireText("spock: Word doesn't exist in dictionary")
        }
    }

    protected void onTearDown() {
        app.models.dictionary.with {
            word = ""
            result = ""
        }
    }
}
person Andres Almiray    schedule 12.10.2010
comment
Спасибо за ваш вклад, я посмотрю на фест и дам вам знать, как он идет. - person GNSL; 15.10.2010