我试图使用FEST swing测试套件为不同的接口响应编写测试。在单班级情况下,它运作良好。但是,现在我有一个使用GMockTestCase的情况。我使用return设置所有模拟的方法调用,然后创建我的" 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))
}
}
任何帮助都将不胜感激。
答案 0 :(得分:0)
为了那些可能有类似问题的人的利益,回答我自己的问题。答案是将测试限制为单个用户输入交互。上面我试图模拟两件事。交互从一个面板屏幕移动到第二个面板以及在第二个面板上进行交互。限制交互以仅测试用户交互的后半部分是允许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将测试分离为单一操作