0

我正在尝试使用 FEST swing 测试套件为不同的接口响应编写测试。在单类情况下,它工作得很好。但是,现在我遇到了使用 GMockTestCase 的情况。我设置了所有带有返回的模拟方法调用,然后创建了我的“播放”外壳,但我的断言失败了。如果我在没有 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))
    }
}

任何帮助,将不胜感激。

4

1 回答 1

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 将测试隔离到单个动作

于 2014-03-01T03:22:59.527 回答