ここから本文です

windowsフォーム単体テストについて 研修にて、与えられた仕様通りwindowsフォ...

w34********さん

2018/5/1922:26:49

windowsフォーム単体テストについて

研修にて、与えられた仕様通りwindowsフォームを作成し、
単体テストを行うという課題が与えられています。
仕様は以下であるとします。

・Form1にTextBox1とButton1があり、Button1をクリックすると、
TextBox1に入力された文字列が10文字以上、または未満によってその旨が書かれたメッセージを表示する
※実際の課題とは異なっていますが、大筋はこのようなものになります。
私はVisual Basicで以下のようなコードを書きました。※メソッド名等は実際とは異なります。

Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If func01(TextBox1.Text) Then
MessageBox.Show("入力された文字列は10文字以上です")
Else
MessageBox.Show("入力された文字列は10文字未満です")
End If
End Sub

Private Function func01(ByVal str As String) As Boolean
Return str.Length >= 10
End Function
End Class

単体テストはメソッドごとに行うとのことですが、以下が質問になります。
・Button1_Clickはどのようにテストを行うべきでしょうか。
・func01はテキストボックスから直接入力することでテストになっているのでしょうか。
・そもそもButton1_Clickの中に条件等を含むロジックを書くべきではないのでしょうか。
・このようなUIの単体テストは決まった手法があるのでしょうか。

当方、経験がなくフォームのテスト方法があまりピンと来ていません。
よろしくお願いします。

閲覧数:
48
回答数:
1
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

kak********さん

2018/5/2000:04:34

>・Button1_Clickはどのようにテストを行うべきでしょうか。
質問者さんの場合は画面からのテストなので、テキストボックスに文字列を入力した後にButton1をクリックした場合の動作をテストすればよいだろうと思います。

>・func01はテキストボックスから直接入力することでテストになっているのでしょうか。
はい、func01のテストになっています。

>・そもそもButton1_Clickの中に条件等を含むロジックを書くべきではないのでしょうか。
イベントハンドラ内には画面の実装とは関係ない処理は記述しない方が良いと思います。
そういう意味で入力値を検査するメソッドをfunc01として定義したのは良い設計だと思います。
研修での課題ですからそこまでは要求されないと思いますが、レビューされた時点で質問されてはどうでしょうか?

個人的にはユニットテストと呼ぶ自動テストで検証しやすいように設計します。
例えばこんな感じです。

Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim valid As New Validation()

If valid.ValidateGraterThanEquals10(TextBox1.Text) Then
MessageBox.Show("入力された文字列は10文字以上です")
Else
MessageBox.Show("入力された文字列は10文字未満です")
End If
End Sub
End Class

Public Class Validation
Public Function ValidateGraterThanEquals10(ByVal input As String) As Boolean
Return input.Length >= 10
End Function
End Class

>・このようなUIの単体テストは決まった手法があるのでしょうか。
最終的には、UIの動作そのものは手動でのテストになりますね。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる