Как использовать FEST-тесты с платформой Groovy GMock

Я пытаюсь использовать свинг-тест FEST для написания теста для разных ответов интерфейса. В ситуациях с одним классом это работает очень хорошо. Однако теперь у меня есть ситуация, когда я использую GMockTestCase. Я установил все вызовы смоделированных методов с возвратами, а затем создал вложение "Play", но мои утверждения не сработали. Если я запускаю тот же тест без класса Mocked, мой тест проходит успешно. Есть ли порядок, в котором вещи должны быть установлены?

Вот мой тест:

@Test
void testsShouldReturnRadioButtonSelectedFromClassGroupButtonGroupKeyPressed(){
    def mockClassMap  = getClassMap()
    mockPG.getAvailibleClass().returns(mockClassMap)
    panel.plyGen = mockPG
    panel.raceValue = 1
    panel.genderValue = 2
    panel.gPane.mainM.setVisible(false)
    panel.gPane.createPlayerStats.setVisible(true)
    //panel.plyGen = new PlayerGenerater()


    play{
        festSetUp(panel.gPane.chooseClass)
        panel.gPane.reRollDice.requestFocusInWindow()


                    // simulate key stroke to change panel view
        robot.keyPress(VK_A)
        robot.keyRelease(VK_A)

        // simulate key stroke to select radio button option
        robot.keyPress(VK_M)
        robot.keyRelease(VK_M)
        assertThat(panel.classValue, is(3))
    }
}

Любая помощь будет оценена.

1 ответ

Решение

Просто чтобы ответить на мой собственный вопрос в пользу тех, у кого может быть похожий вопрос. Ответ заключался в том, чтобы ограничить тест одним вводом данных пользователем. Выше я пытался смоделировать две вещи. Взаимодействие для перехода от одного экрана панели ко второму, а также взаимодействие на второй панели. Ограничение взаимодействия для проверки только второй половины взаимодействия с пользователем позволило FEST правильно распознать взаимодействия. Результирующий код для прохождения теста в этом примере был:

def mockClassMap  = getClassMap()

    panel.plyGen = mockPG
    mockPG.getAvailableClass().returns(mockClassMap)
    panel.raceValue = 1
    panel.genderValue = 2
    panel.gPane.mainM.setVisible(false)
    panel.gPane.chooseClass.setVisible(true)
    //panel.plyGen = new PlayerGenerator()


    play{
        festSetUp(panel.gPane.chooseClass)
                          /*additional methods that need to be triggered in order to 
                           *set up the panel for actual test
                          */
            panel.setClassGroup()
            gPane.classGroupPanel.revalidate()
            gPane.chooseClass.setVisible(true)

                     //simulate user interaction
        robot.keyPress(VK_M)
        robot.keyRelease(VK_M)

                       //assert results
            assertThat gPane.selectClass.getSelection(), is(gPane.monk.getModel())

    }

Итак, базовое модульное тестирование 101 изолирует тесты от отдельных действий

Другие вопросы по тегам