Как использовать 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 изолирует тесты от отдельных действий