0

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

どんな助けでも大歓迎です。

4

1 に答える 1

0

同様の質問をしている可能性のある人の利益のために、私自身の質問に答えるだけです。その答えは、テストを単一のユーザー入力操作に制限することでした。上記では、2 つのことをシミュレートしようとしていました。1 つのパネル画面から 2 つ目のパネルに移動するインタラクションと、2 つ目のパネルでのインタラクション。ユーザー インタラクションの後半部分だけをテストするようにインタラクションを制限することで、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 に答える