1

簡単なCRUDベースのアプリケーションを実行する必要があります。私はTDDの方法でこれにアプローチしようとしています。私はTDDの初心者であり、テストの進め方を実際に理解することはできません。

シナリオは次のとおりです。

  • 従業員を(一度に1人ずつ)作成/更新/削除できる必要があります。
  • 表示目的で従業員のリストを取得できる必要があります

簡単にするために、これをコマンドラインアプリケーションと見なすことができます。(実際には、これをWPF MVVMアプリケーションとして実行します。)

私の最初のテストがどうあるべきかわかりません。

私がこれまでに試したことは次のとおりです。

一連の従業員を返す従業員リポジトリがあると仮定します。

私が試みた最初のテストは次のとおりです。

[Test]
public void RepositoryShouldReturnTheListOfEmployees()
{
    var repository = new EmployeeRepository();
    var employees = repository.GetEmployees();

    Assert.IsNotEmpty(employees);
}

これから始めて、GetEmployees()メソッドからEmployeeオブジェクトを返し、テストに合格しました。次に、テストに合格したら、EmployeeRepositoryをリファクトしてインターフェイスを実装し、それをテストメソッドで使用しました。

これは非常に簡単な作業であり、このアプローチは私にとってはやり過ぎのようです(少なくとも今のところ)。しかし、アプリケーションが大きくなると、些細なことでもテストがうまくいくと確信しています。

しかし、私のアプローチでは何かが正しくないと感じています。経験豊富なTDDerは同じアプローチに従いますか?またはそれは何でしょうか。また、「従業員の追加」機能に使用できるテストは考えられません。

これらのCRUDシナリオをスキップして、他のより複雑な機能を試してみることができます。しかし、それは正しいアプローチですか?

基本的に、私が今行っているのは、リポジトリのテストドライブです。これは、情報の保持と取得以外には何もしません。これまでのところ、このTDDは、私にとって非常にありふれた作業のように見えました。

すべての入力に感謝します。

4

1 に答える 1

1

時々正しいことをするのは退屈です。

これが私がこれをどう見るかです。

EmployeeRepositoryは、EmployeeObjectsのCRUDをサポートすることになっているロールです。したがって、これはアプリケーションとDB/データストア間のポートです。(ポートとアダプタのパターンCockburnなどを参照してください)。

  1. EmployeeRepositoryが満たす必要のある仕様を文書化するテストを作成します。これらのテストは、ロール/インターフェースのメソッドを呼び出します。任意の実装を置き換え(セットアップでインスタンスを作成)、それに対してテストを実行できる必要があります。例:SqlEmployeeRepository。これは統合テストと見なされます。SQLサブシステムがEmployeeRepositoryコントラクトに従っていることをテストしています。各メンバーはadvtとして機能します。
  2. アプリの残りの部分の単体テストでは、この役割にモックを使用します。彼らはあなたのアプリがEmployeeRepositoryで正しい呼び出しを行うことをテストしているでしょう。ステップ1は、テストからSQL依存関係を排除したため、テストが高速に実行されることを保証します。
于 2012-06-14T06:10:40.423 に答える