NUnitNUnitForms

 

必要とするモジュール。

NUnit: http://www.nunit.org/ NUnit本体)

NUnitForms: http://nunitforms.sourceforge.net/ (NUnit上でフォームのテストをするための拡張モジュール)

TD.NET: http://www.testdriven.net/ (NUnitVisual Studioから直接実行できるようにするためのアドイン)

 

テストクラスはpublicでないとTD.Netから起動ができない。

NUnitFormsを用いたキーボード入力を必要とする単体テストをデバッグするとき、KeyboardControllerクラスはインスタンス化しておく必要がある。

 

NUnitFormsRecorder:

1.対象アセンブリをdll化しておく。(プロジェクトのプロパティにて、出力種類を「クラスライブラリ」に設定して、ビルド)

2.NUnitForms.Recorder.Application.exeを起動

3.FileLoadを選び、対象となるアセンブリを含むdllを選択する。

4.ドロップダウンから対象とするFormクラスが選べるようになっているので、選択すると対象のフォームが現れる。

5.Formに対して処理を実行すると、裏側でそれに対応するNUnitFormsのテストコードが作成される。(スゴイ!)

6.右クリックメニューから、特定のコントロールに対してのAssert文を追加することも出来る。(スゴ過ぎ!!)

7.Assert文が追加されている。

8.あとはこのソースコードをカット&ペーストで自分のテストクラスに貼り付けるだけ。その後でどう手を加えてもかまわない。

 [Test]

public void testButton1PressedWhenCorrectPasswordIsInput()

{

    TextBoxTester textBox1 = new TextBoxTester("textBox1");

    TextBoxTester textBox2 = new TextBoxTester("textBox2");

    ButtonTester Form1_button1 = new ButtonTester("button1", "Form1");

    LabelTester label3 = new LabelTester("label3");

    FormTester Form1 = new FormTester("Form1");

 

    textBox1.Enter("abc");

    textBox2.Enter("abc");

    Form1_button1.Click();

    Assert.AreEqual("Logged in.", label3.Properties.Text);

}

 

9.スクリーンショットの比較も出来るようですが、それはまた後日。。

 

 

ModalFormTesterを学ぶきっかけをくれたサイト:

http://d.hatena.ne.jp/masakitk/20110516/1305548197

 

 

 

サンプル:MyFormTest

 

 

MyForm.cs

MyFormTest.cs

 

MyNUnit.zip