他のメソッドを呼び出すメソッドのユニットテスト
2023-11-14 17:39:20
質問
例えば、複数のメソッドを呼び出すメソッドをユニットテストするための最良の方法は何でしょうか。
modify(string value)
{
if(value.Length > 5) replaceit(value);
else changeit(value);
}
この疑似コードは、(現在のところ)どちらかを呼び出すモディファイメソッドを持っています。
replaceit()
または
changeit()
. に対するテストは既に書きました。
replaceit
と
changeit
というように、modifyのために新しいテストを書くことは、99%同じコードのセットになります。 将来的に変更される可能性があるので、考えてテストする必要があります。
では、既存のテストコードをコピーペーストすればいいのでしょうか? テスト コードを共通の関数に移動しますか。 他のアイデアはありますか? 私はここでのベストプラクティスがわかりません。
どのように解決するのですか?
これは、古典的な状態ベースのテストと行動ベースのテストのシナリオです。
このばかばかしいほど単純な例では、出力をテストすることは問題ありません。しかし、ある時点で、実行後に状態を検査するのが複雑なテストに遭遇することになります。 その代わりに、振る舞いをチェックしたいと思うでしょう(例えば、changeitが特定の値で呼び出されたことを確認する)。
その時点で、おそらくRhino.Mocks(.Net)またはMockito(Java)のようなモックオブジェクトフレームワークを調べ、よりインターフェースベースのコードを書き始める必要があります。
関連
-
[解決済み】Assert.Fail()はバッドプラクティスとみなされるか?
-
[解決済み] tornado + async defのunittestはどのように行うのですか?
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] ユニットテストの命名のベストプラクティス [終了しました]。
-
[解決済み] データベース駆動型アプリケーションのユニットテストに最適な戦略とは?
-
[解決済み】典型的なテストディレクトリ構造でunittestを実行する
-
[解決済み】Angular 2 Unit Tests。名前 'describe' が見つからない
-
[解決済み] Unit Testsでランダムデータ?
-
[解決済み] ExpressJS のインスタンスをプログラムでシャットダウンするにはどうすればよいですか?
-
[解決済み] テストが見つかりません。インストールされているテストのディスカバラーとエグゼキューター、プラットフォームとフレームワークのバージョン設定が適切であることを確認し、もう一度試してみてください。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】ユニットテストとは何ですか?[クローズド]
-
[解決済み】Unit Testsの一般的な命名規則にはどのようなものがありますか?[クローズド]。
-
[解決済み] テスト駆動開発のデメリット?[クローズド]
-
[解決済み] クロームの拡張機能をテストするには?
-
[解決済み] Unit Testsでランダムデータ?
-
[解決済み] "エラー。Karma-Jasmineのユニットテストケースを書いているときに「No provider for router」というエラーが発生しました。
-
[解決済み] ActivatedRouteのパラメータに依存するコンポーネントをどのようにユニットテストするか?
-
[解決済み] ユニットテストはどれだけ深いか?
-
[解決済み] JUnit 4 vs TestNG - 2013年~2014年最新情報 [終了しました。]
-
[解決済み] Jestでモックされたサービスが「jest.mock()のモジュールファクトリは、スコープ外の変数を参照することを許可されていません」エラーを発生させる