[解決済み】voidメソッドのユニットテスト?
質問
何も返さないメソッドをユニットテストする最良の方法は何でしょうか?特にc#で。
私が本当にテストしようとしているのは、ログファイルを受け取り、特定の文字列のためにそれを解析するメソッドです。文字列は、その後、データベースに挿入されます。以前から行われていないことはありませんが、TDDに非常に慣れていないため、これをテストすることが可能かどうか、または実際にテストされないものであるかどうか疑問に思っています。
どのように解決するのですか?
メソッドが何も返さない場合、以下のどちらかです。
- 必須 - オブジェクトにそれ自身に対して何かをするように要求している。例えば、状態を変更する(確認を期待せずに。)
- 情報提供 - それぞれ、何かが起こったことを(行動や反応を期待せずに)誰かに通知すること。
Imperativeメソッド - タスクが実際に実行されたかどうかを検証することができます。状態変化が実際に起こったかどうかを検証する。
void DeductFromBalance( dAmount )
このメッセージの後の残高が本当に初期値より少ないかどうかは、dAmount で確認することができます。
情報提供メソッド - オブジェクトのパブリックインターフェイスのメンバーであることは稀です...したがって、通常ユニットテストは行われません。しかし、もし必要であれば、notificationに対して行われるべき処理が行われたかどうかを検証することができます。
void OnAccountDebit( dAmount ) // emails account holder with info
は、メールが送信されているかどうかを確認することでテストできます。
実際の方法についてもっと詳細を投稿すれば、より良い回答が得られるでしょう。
アップデート
: あなたのメソッドは2つのことを行っています。私は実際にそれを2つのメソッドに分割し、独立してテストすることができます。
string[] ExamineLogFileForX( string sFileName );
void InsertStringsIntoDatabase( string[] );
String[]は、最初のメソッドにダミーファイルと期待される文字列を提供することで簡単に検証することができます。2つ目は少し厄介です。DBを模倣するモック(googleやstackoverflowでモッキングフレームワークを検索)を使うか、実際のDBを叩いて文字列が正しい位置に挿入されているかどうかを確認します。チェック
このスレッド
良い本があれば教えてください。もし、あなたが困っているのなら、Pragmatic Unit Testingを推薦します。
コードでは、次のように使用します。
InsertStringsIntoDatabase( ExamineLogFileForX( "c:\OMG.log" ) );
関連
-
[解決済み】「未割り当てのローカル変数を使用」とはどういう意味ですか?
-
[解決済み】Unity3DでOnTriggerEnterが動作しない件
-
[解決済み】2つ(またはそれ以上)のリストを1つに統合する(C# .NETで
-
[解決済み] ...基礎となる接続は閉じられました。予期しないエラーが受信で発生しました
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] Mockitoでvoidメソッドをモックする方法
-
[解決済み] C# "internal "アクセス修飾子でユニットテストを行う場合
-
[解決済み] データベース駆動型アプリケーションのユニットテストに最適な戦略とは?
-
[解決済み】PHPUnitでprotectedメソッドをテストするためのベストプラクティス
-
[解決済み] Entity Framework 6のユニットテストはどうなっているのか、気になりますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Excel "外部テーブルが期待された形式ではありません。"
-
[解決済み】非静的メソッドはターゲットを必要とする
-
[解決済み】C# - パスに不正な文字がある場合
-
[解決済み】"指定されたパスのフォーマットはサポートされていません。"
-
[解決済み】ファイルへの読み書きの際に共有違反のIOExceptionが発生する C#
-
[解決済み】ランダムなブーリアンを生成する最速の方法
-
[解決済み】C#のequal to演算子でtextとvarcharのデータ型は互換性がない
-
[解決済み】別のスレッドがこのオブジェクトを所有しているため、呼び出し側のスレッドはこのオブジェクトにアクセスできない
-
[解決済み】WebResource.axdとは何ですか?
-
[解決済み】スレッド終了またはアプリケーションの要求により、I/O操作が中断されました。