LingoUnit Quick Tour

[ English | Japanese || Home | Project Summary ]
Last updated: Wed, 31 Oct 2001 18:29:24 +0900

Contents


TestRunnerを実行する

  1. 新しいムービーを開きます。
  2. LingoUnit.cstをムービーにリンクします。
  3. XtraからGUITestRunnerを選択します。
  4. [...] ボタンを押します。 このボタンはテストの一覧を表示します。現状ではテストが存在しないため、 リストは空のままです。
  5. 一覧になにも表示されないのを確認したら、[OK] ボタンを押して戻ります。
  6. [Run]ボタンを押して、AllTestsというキャストメンバーが存在しないというメッセージが表示されることを確認します。
  7. [Exit]ボタンを押して、GUITestRunnerを終了します。

LingoUnitTestsを実行する

  1. 新しいムービーを開きます。
  2. LingoUnit.cstをムービーにリンクします。
  3. LingoUnitTests.cstをムービーにリンクします。
  4. XtraからGUITestRunnerを選択します。
  5. [Run]ボタンを押して、70数個のテストが実行されるのを確認します。
  6. これらのテストケースは、LingoUnitフレームワーク自体をテストしています。無事全てのテストにパスしたら、
  7. [Exit]ボタンを押して、GUITestRunnerを終了します。

テストケースを書く

  1. 新しいムービーを開きます。
  2. デフォルトのキャストライブラリの名前をMainに変更します。
  3. LingoUnit.cstをムービーにリンクします。
  4. ライブラリパレットを開いて、TestCaseTemplateをMainキャストライブラリにドラッグドロップします。
  5. TestCaseTemplateの名前をMyTestに変更します。
  6. スクリプトウィンドウを開いて、MyTestを以下のように書き換えます。

    property ancestor, pX, pY


    on new me, testName
      ancestor = script("TestCase", "LingoUnit").new(testName)
      return me
    end


    on setUp me
      pX = 3
      pY = 2

    end


    on testSomething me
      pX = pX * 3
      me.assertEquals(9, pX)
      me.assertTrue((pY - pX) < 0)
      me.assertEquals("abc", "ABC") -- case insensitive.
      me.assertEqualsCS("abc", "abc") -- case sensitive.

    end

  7. リコンパイルボタンを押します。
  8. XtraからGUITestRunnerを選択します。
  9. [...]ボタンを押して、Main.MyTestを選択して[OK]ボタンを押します。もしくは、 Main.MyTestをダブルクリックします。
  10. [Run]ボタンを押して、1個のテストが実行されるのを確認します。

失敗するテストケースを書く

  1. MyTestに以下を追加します。

    property ancestor, pX, pY


    on new me, testName
      ancestor = script("TestCase", "LingoUnit").new(testName)
      return me
    end


    on setUp me
      pX = 3
      pY = 2
    end


    on testSomething me
      pX = pX * 3
      me.assertEquals(9, pX)
      me.assertTrue((pY - pX) < 0)
      me.assertEquals("abc", "ABC") -- case insensitive.
      me.assertEqualsCS("abc", "abc") -- case sensitive.
    end


    on testSomething2 me
      me.assertEquals(3, pX, "OK")
      me.assertEquals(3, pY, "failure!!")
    end


  2. GUITestRunnerでMain.MyTestを実行し、2個のテストケースのうち、1つが失敗するのを確認します。
  3. 失敗したテスト結果を選択して、Runボタンを押す(あるいはテスト結果をダブルクリックする)ことで、テストケースを再実行することができます。再実行して失敗することを確認します。
  4. testSomething2を以下のように修正します。

    on testSomething2 me
      me.assertEquals(3, pX, "OK")
      me.assertEquals(2, pY, "failure!!")
    end

  5. リコンパイルボタンを押します。
  6. 再実行して、今度は成功することを確認します。

テストスイートを作成して実行する

  1. ライブラリパレットからSuiteFactoryTemplateをMainキャストライブラリにドラッグドロップします。
  2. SuiteFactoryTemplateの名前をMyTestSuiteに変更します。
  3. MyTestSuiteを以下のように書き換えます。

    on suite thisScript
      aTestSuite = script("TestSuite", "LingoUnit").new()
      aTestSuite.addTestSuite(member("MyTest", "Main"))
      return aTestSuite
    end

  4. XtraからGUITestRunnerを開きます。
  5. Main.MyTestSuiteを実行して、2個のテストが実行されるのを確認します。

メッセージウィンドウからテストを実行する

  1. メッセージウィンドウに以下を入力して、テストを実行します。

    script("TestRunner").run("Main.MyTest")

    -- ""
    -- "Time: 0.003"
    -- ""
    -- "OK"
    -- " (2 tests)"
    -- ""

  2. スイートを実行するときは

    script("TestRunner").run("Main.MyTestSuite")

    -- ""
    -- "Time: 0.003"
    -- ""
    -- "OK"
    -- " (2 tests)"
    -- ""

  3. TestCaseやTestSuiteオブジェクトを渡すこともできます。またテストケースのメンバーを渡すこともできます。

    script("TestRunner").run(script("MyTest", "Main").new("testSomething2"))
    -- ""
    -- "Time: 0.002"
    -- ""
    -- "OK"
    -- " (1 tests)"
    -- ""
    script("TestRunner").run(script("MyTestSuite", "Main").suite())
    -- ""
    -- "Time: 0.003"
    -- ""
    -- "OK"
    -- " (2 tests)"
    -- ""
    script("TestRunner").run(member("MyTest", "Main"))
    -- ""
    -- "Time: 0.003"
    -- ""
    -- "OK"
    -- " (2 tests)"
    -- ""

  4. もっと詳細に出力したいなら

    script("TestRunner").run("Main.MyTest", script("VerboseReport", "LingoUnit").new())
    -- "Running: testsomething (Main.MyTest)"
    -- "Running: testsomething2 (Main.MyTest)"
    -- ""
    -- "Time: 0.023"
    -- ""
    -- "OK"
    -- " (2 tests)"
    -- ""

  5. MainにテキストメンバーMyTestOutputを作成して以下を実行すると、テキストメンバーに結果が出力されます。

    aWriter = script("TextMemberWriter", "LingoUnit").new(member("MyTestOutput", "Main"))
    aReport = script("VerboseReport", "LingoUnit").new(aWriter)
    script("TestRunner").run("Main.MyTest", aReport)

  6. 以下は、JUnitと同様にドット(.)で進捗状況を表示します。

    aWriter = script("TextMemberWriter", "LingoUnit").new(member("MyTestOutput", "Main"), TRUE)
    aReport = script("ProgressionReport", "LingoUnit").new(aWriter, 50)
    script("TestRunner").run("AllTests", aReport)


スイートにテストを追加する

  1. MyTestSuiteを以下のように書き換えます。

    on suite thisScript
      aTestSuite = script("TestSuite", "LingoUnit").new()
      aTestSuite.addTestSuite(member("MyTest", "Main"))
      aTestSuite.addTestSuite(member("MyTest", "Main"))
      aTestSuite.addTestSuite(member("MyTest", "Main"))

      return aTestSuite
    end

  2. 6個のテストが実行されるのを確認します。
  3. MyTestSuiteを以下のように書き換えます。

    on suite thisScript
      aTestSuite = script("TestSuite", "LingoUnit").new()
      aTestSuite.addTestSuite(member("MyTest", "Main"))
      aTestSuite.addTestSuite(member("MyTest", "Main"))
      aTestSuite.addTestSuite(member("MyTest", "Main"))
      aTestSuite.addTest(script("MyTest", "Main").new("testSomething2"))
      return aTestSuite
    end

  4. 7個のテストが実行されるのを確認します。
  5. MyTestSuiteを以下のように書き換えます。

    on suite thisScript
      aTestSuite = script("TestSuite", "LingoUnit").new()
      aTestSuite.addTestSuite(member("MyTest", "Main"))
      aTestSuite.addTestSuite(member("MyTest", "Main"))
      aTestSuite.addTestSuite(member("MyTest", "Main"))
      aTestSuite.addTest(script("AllTests", "LingoUnitTests").suite())
      return aTestSuite
    end

  6. LingoUnitTests.cstをリンクします。
  7. Main.MyTestSuiteを実行して70数個のテストが実行されるのを確認します。

Koseki Kengo <kengo@tt.rim.or.jp>