(今回と次回に渡り2パターンのソースコードの書き方をメモしておく)
NUnitだと画面を使用しない単体テストだけのテストになってしまう。
これを使うと、画面を表示しての自動テストができるようになる。
・VisualStudio
使用バージョン:2005 Standard Edition
・NUnitForms
使用バージョン:不明(多分、.Net 2.0 NUnitForms alpha 5 release でいけるはず)
バージョン別ファイルが細かく存在するサイトでダウンしたので覚えてないしファイルにも書いてない
ダウンロードサイト:http://www.nunit.org/download.html
VS2005でプロジェクトが作成してあり、.NET2.0で動くNUnitFormsじゃないとまともに動かない。
なので、バージョンは2006年頃の古いものとなる。
・インストール手順
圧縮ファイルをダウンロード後、任意の場所に解凍。
・設定方法
1、解凍したフォルダを見るとソリューションファイルがあるので起動。
2、ビルドする。
3、できたNUnitFormsのDLLとそこに同伴されているNUnitのDLLを任意の場所に移す。最初にインストールしてあったNUnit-GUIのNUnit.framework.dllとはバージョンが違うので不整合を起しエラーが出て動かなくなるので、必ずNUnitFormsフォルダにあるNUnitForms用DLLとNUnit用DLLの2つをセットで使う事。後、ファイルは移さなくてもいいが管理しやすいように"Program Files"の下に専用フォルダを作った。
4、NUnitテストプロジェクトで参照設定した方法は使わない。プロジェクトの「参照の追加」からNUnitFormsと対になっているNUnitのDLLを追加する。間違っても.NETタブから選ばない事。
・NUnitFormsの使用例
[作成手順]
1、NUnitテストコードが書けるように設定しておく。
2、テストコードのImportsに「NUnit.Extensions.Forms」を追加する。
3、NUnitForms用のテストコードを書く
(いつものようにテストメソッドは全部Publicにする)
(画面は一つしか使用せず、画面遷移もしない)
何かフォームを作成する
主に使用するパーツのプロパティ
[画面タイトル]
Name:LoginForm
Text:ログイン画面
[テキストボックス]
Name:txtUserName
MaxLength:12
Text:(空)
[テキストボックス]
Name:txtPassword
MaxLength:16
PassWordChar:*
Text:(空)
[ボタン]
Name:btnLogin
Text:ログイン
[ボタン]
Name:Button2
Text:キャンセル
[ラベル]
Name:lblErrorMessage
Text:(空)
Visible:False
Name:lblErrorMessage
Text:(空)
Visible:False
・ソリューション構成
今回はプロジェクトを分けずに作った
・ソースコード
「LoginForm.vb」
Public Class LoginForm
Private Sub LoginForm_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
lblErrorMessage.Visible = False
End Sub
Private Sub btnLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogin.Click
lblErrorMessage.Visible = False
If txtUserName.Text = "" Then
lblErrorMessage.Visible = True
lblErrorMessage.Text = "ユーザー名を入力してください。"
Exit Sub
End If
If txtPassword.Text = "" Then
lblErrorMessage.Visible = True
lblErrorMessage.Text = "パスワードを入力してください。"
Exit Sub
End If
End Sub
End Class
「LoginFormTest.vb」
Imports System
Imports System.Windows.Forms
Imports NUnit.Framework
Imports NUnit.Extensions.Forms
<TestFixture()> _
Public Class LoginFormTest
Inherits NUnitFormTest ' NUnitFormTestクラスからの継承
Dim loginForm As Form
Public Overrides Sub Setup()
MyBase.Setup()
loginForm = New LoginForm()
loginForm.Show()
End Sub
Public Overrides Sub TearDown()
loginForm.Close()
MyBase.TearDown()
End Sub
Public Overrides ReadOnly Property UseHidden() As Boolean
Get
Return False
End Get
End Property
<[Test]()> _
Public Sub ログインフォームのタイトル表示()
Dim loginFormTester As FormTester = New FormTester("LoginForm")
Assert.AreEqual("ログイン画面", loginFormTester.Text)
End Sub
<[Test]()> _
Public Sub ユーザー名テキストボックスに設定されるべき値()
Dim userNameTester As TextBoxTester = New TextBoxTester("txtUserName")
Assert.AreEqual(String.Empty, userNameTester.Text)
Assert.AreEqual(12, userNameTester("MaxLength"))
End Sub
<[Test]()> _
Public Sub パスワードテキストボックスに設定されるべき値()
Dim passwordTester As TextBoxTester = New TextBoxTester("txtPassword")
Assert.AreEqual(String.Empty, passwordTester.Text)
Assert.AreEqual(16, passwordTester("MaxLength"))
Assert.AreEqual(Char.Parse("*"), passwordTester("PasswordChar"))
End Sub
<[Test]()> _
Public Sub エラーメッセージラベルに設定されるべき値()
Dim errorMessageLabelTester As LabelTester = New LabelTester("lblErrorMessage")
Assert.IsFalse(CBool(errorMessageLabelTester("Visible")))
End Sub
<[Test]()> _
Public Sub ユーザー名を入力しないとログインできない()
Dim loginButtonTester As ButtonTester = New ButtonTester("btnLogin")
loginButtonTester.Click()
Dim errorMessageLabelTester As LabelTester = New LabelTester("lblErrorMessage")
Assert.IsTrue(CBool(errorMessageLabelTester("Visible")))
Assert.AreEqual("ユーザー名を入力してください。", errorMessageLabelTester.Text)
End Sub
<[Test]()> _
Public Sub パスワードも入力しないとログインできない()
Dim userNameTester As TextBoxTester = New TextBoxTester("txtUserName")
Keyboard.UseOn(userNameTester)
Keyboard.Click(Key.U)
Keyboard.Click(Key.S)
Keyboard.Click(Key.E)
Keyboard.Click(Key.R)
Keyboard.Click(Key.DIGIT_1)
Dim loginButtonTester As ButtonTester = New ButtonTester("btnLogin")
loginButtonTester.Click()
Dim errorMessageLabelTester As LabelTester = New LabelTester("lblErrorMessage")
Assert.IsTrue(CBool(errorMessageLabelTester("Visible")))
Assert.AreEqual("パスワードを入力してください。", errorMessageLabelTester.Text)
End Sub
End Class
・参考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
↓クリックで、このブログの評価が上がり執筆者が喜びます
にほんブログ村
0 件のコメント:
コメントを投稿