2013-04-09 15 views
0

我正在尝试使用FEST swing测试套件为不同的界面响应编写测试。在单班的情况下,它运作得很好。但是,现在我遇到了一个我正在使用GMockTestCase的情况。我设置了所有带退货的模拟方法调用,然后创建我的“Play”机箱,但我的断言失败。如果我运行相同的测试没有Mocked类,我的测试通过。有什么命令必须设置?如何在Groovy的GMock框架中使用FEST测试

这里是我的测试:

@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

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

相关问题