私はTDDとJUnitを始めています。チュートリアルやドキュメントをチェックした後、私はいくつかの質問を持っていると私はいくつかのベストプラクティスのフィードバックを得る場合には幸せになります。
A)すべての例I鋸はセマンティック/ロジックの並べ替えを持っている方法のためのものです。
入力 - >ロジック - >出力
例えば2つの数字は - >それらを追加 - >結果
テストケースがあるため、出力に対する入力の変換のロジックをチェックします。私は、その罰金を理解しています。
何そのような入力がありません(または外付けの結果に大きな依存性があります)場合は?
たとえば、
String getName (int id)
{
// read the name of a staffmember out of the DB and return it
}
なるほど、コンパイル/デプロイ時に、コンテキストに依存しない確認することができますそこには本物のロジック。
何アサート意味をなすか、何のテストが公正ないだろうサンプルということであるでしょうか?
私は、文脈独立した入力のテストのみが意味をなすだろうと思います。外部データベースまたはWebRequestクラスの結果ではない(と思う? - あなたは同意しません)ということです。
B)あなたたちは、「テストケースとメソッド」を「メソッドが存在する」の割合は何だと思いますか?プロジェクトまたはトピックに依存しますが、私はいくつかの数字に興味があることを確認。
ほとんどの機能テストを有することができる。まず、いないすべての機能を直接テストする必要があります。いくつかは、より良い、呼び出し元のコードのテストによってテストされています。
第二には、副作用または状態に依存しているコードを扱うとき、あなたは特定のシナリオをテストするために必要とコンテキストを作成する方法があります。方法の一つは、使用しているテストダブルを。
もちろん、私たちは純粋な機能ではありませんコードのテストを持っている必要があります。あなたがいない場合の関数は(例えば関数型プログラミングを使用して)、しかし、あなたのコードのニーズの残りがうまくように試験することが純粋ではないあなたが持っているコードの量を最小限に抑えることができます。
最後に、それは通常と呼ばれているとして、あなたが話している「比」、または「テスト・カバレッジは」、あなたのテストスイートを持っている信頼のレベルに依存します。最後に、それは最終的に、全体のポイントである、あなたは物事を壊すのを恐れることなく、あなたのコードをリファクタリングすることを可能にするという確信です。