如何在Groovy的GMock框架中使用FEST测试



我正在尝试使用FEST摇摆测试套件来编写不同接口响应的测试。在单类情况下,它非常有效。然而,现在我有一种情况,我有使用GMockTestCase。我设置了所有的模拟方法调用与返回,然后创建我的"玩"外壳,但我的断言失败。如果我在没有mock类的情况下运行相同的测试,我的测试就通过了。有什么东西必须按顺序摆放吗?

下面是我的测试:

@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))
    }
}

只是为了回答我自己的问题,以方便那些可能有类似问题的人。答案是将测试限制为单个用户输入交互。上面我试图模拟两件事。从一个面板屏幕移动到另一个面板的交互以及第二个面板上的交互。将交互限制为仅测试用户交互的后半部分是允许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将测试隔离到单个操作

相关内容

  • 没有找到相关文章

最新更新