2011年2月23日水曜日

NUnitFormsの開発環境構築(その2)

NUnitFormsの開発環境構築(その2)
(前回とは違うパターンのソース記述)

・テストコード
1、テストコードのImportsに「NUnit.Extensions.Forms」を追加する
2、NUnitForms用のテストコードを書く   
    (今回はテストメソッドはPublicが1個、他はPrivateにする)
    (画面2個、メッセージボックス1個使用し、画面遷移する)
    何かフォームを2個作成する











    プロパティ類は特にいじらない


・ソリューション構成













・ソースコード
「Form1.vb」
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Form2.ShowDialog()
    End Sub

End Class

「Form2.vb」
Public Class Form2
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        MessageBox.Show("TEST", "TITLE", MessageBoxButtons.OK)
    End Sub

End Class

「TestClass.vb」
Imports System
Imports System.Reflection
Imports System.Windows.Forms
Imports NUnit.Framework
Imports NUnit.Extensions.Forms


<TestFixture()> _
Public Class TestClass
    Inherits NUnitFormTest ' NUnitFormTestクラスからの継承

    ' これがないとうまくいかない
    Public Overrides ReadOnly Property UseHidden() As Boolean
        Get
            Return False
        End Get
    End Property


    ' 別ウィンドウを表示させる
    <[Test]()> _
    Public Sub Test()
        Dim target As Form1 = New Form1()
        target.Show()

        ' Form2は"Name"プロパティの値、クラス名がセットされる(VS2005)
        ExpectModal("Form2", "Form2Test")

        Dim button1 As ButtonTester = New ButtonTester("Button1")
        button1.Click()

        ' Assert. テスト内容
        target.Close()

    End Sub

    ' メッセージボックスを表示させる(Private)
    Private Sub Form2Test()

        ' TESTはメッセージボックスのキャプション
        ExpectModal("TITLE", "MsgBoxClickOk")

        ' Form2は"Name"プロパティの値、クラス名がセットされる(VS2005)
        Dim Form2 As FormTester = New FormTester("Form2")

        Dim button1 As ButtonTester = New ButtonTester("Button1", "Form2")
        button1.Click()

        ' Assert. テスト内容
        Form2.Close()
    End Sub


    ' メッセージボックスのメッセージを取得して正しいか確認(Private)
    Private Sub MsgBoxClickOk()
        Dim mbx As MessageBoxTester = New MessageBoxTester("TITLE")

        Assert.AreEqual("TEST", mbx.Text)
        ' TESTはメッセージボックスのキャプション
        mbx.ClickOk()
    End Sub

End Class

    画面を遷移させる時、次に開いた画面はNUnitForms側で認識しないらしい
    なので、次に開く画面をテスターに認識させる為の処理がいる
    ExpectModal("Form2", "Form2Test") ← 次に開く画面名称と、テストするメソッド名を指定する
    ExpectModal("TITLE", "MsgBoxClickOk") ← メッセージボックスの場合、タイトル名称とテストメソッド名を指定する


・参考URL
http://nunitforms.sourceforge.net/
http://www.atmarkit.co.jp/fdotnet/nagile/nagile03/nagile03_02.html
http://jinblog.at.webry.info/201003/article_2.html
http://jinblog.at.webry.info/201003/article_1.html
http://jinblog.at.webry.info/201003/article_3.html
http://blogs.yahoo.co.jp/dk521123/21717521.html



   ↓クリックで、このブログの評価が上がり執筆者が喜びます
にほんブログ村 IT技術ブログ プログラム・プログラマーへ
  にほんブログ村

0 件のコメント: