0

TDDの原則に従ってコードを作成しようとするのは(ほぼ)初めてです。でもどうやって始めようか悩んでいます。

例: 人に関する情報を変更したい。

簡単にするために、人は次の値のみを持ちます: - FirstName - LastName - Email

最後に必要なもの: - 個人の DTO - 個人のエンティティ (Nhibernate) - データベースに dto 値を格納する機能。最後に、成功またはエラー (おそらくブール値) を返す必要があります。

与えられた情報で、どうやって始めるのですか?これは世界的な問題ですが、それは私がどのように始めればよいのか見当がつかないからです。私は多くの記事を赤くしましたが、どういうわけか私はすでに立ち往生しています.

編集: - MVC を使用しています: MVC は DTO (フォーム フィールドから入力) を返します。

したがって、MVC 開始呼び出しは次のようになります。

public JsonResult MutatePerson(PersonDto person){
    //Call functions by TDD here
    return Json(true);
}
4

3 に答える 3

1

TDD を使用する場合は、インターフェイスを引数として使用する必要があります。インターフェイスはモックすることができ、モックを使用して MutatePerson メソッドをテストします。単体テストでは、オブジェクトがメソッドにどのように反応するかではなく、メソッドが入力にどのように反応するかのみをテストします。DTO オブジェクトの動作もテストする場合は、統合テストを作成しています。

PersonDtoそのため、 (存在しない場合は作成してください)のインターフェイスを使用します。そして、それを具象クラスの代わりにメソッド引数として使用します。

于 2012-11-06T11:41:27.147 に答える
1

関連するオブジェクトについて説明しましたが、操作については説明しませんでした。

read()おそらく、操作、操作が必要ですwrite()。おそらくlist()操作?

上記のすべてには、関連するテストが必要です。

testCanReadViaId();
testCanThrowExceptionOnReadingInvalidId();
testCanWrite();

多くの作業では、データベースに依存しないように、データソースなどをモックし、(たとえば) ハードコードされたデータを永続化レイヤーの下に配置する必要があります。ただし、上記のようなものについては、基本的なデータベースの相互作用を確実にテストします。

そのため、(最初に) 既定のデータを含むデータベースに対してテスト スイートを指定する必要がある場合があります。より柔軟にしたい場合は、テストを実行する前に、テスト セットアップ コードで最初にエンティティをデータベースに書き込むことができます。

テストでは、データと操作のさまざまな順列をテストする必要があります。たとえば、上記では、有効な ID (たとえば 1) を介してオブジェクトを読み取るテストと、無効な ID (たとえば -1) に対する同様の操作を提案しました。また、さまざまなデータの組み合わせを確認することもできます (たとえば、電子メール アドレスが入力されていない場合、すべてが機能しますか? データベースの列が null 許容の場合、これは有効である可能性があります)。

于 2012-11-05T13:13:36.103 に答える
1

それは私だけかもしれませんが、レイヤー、モジュール、およびそれらの間の依存関係と相互作用の観点から、グローバル システムがどのように見えるべきかについて、ほとんど理解していないように感じます。

TDD の新たな設計は確かに小さなオブジェクト グラフのレベルで機能しますが、最初に全体的なアーキテクチャ設計をある程度行う必要があります (大規模な先行設計ではありませんが、開始するには十分です)。

それを念頭に置いて、何をテストするかについてはるかに良いアイデアが得られると思います。

それを理解したら、次のことを行う必要があると思います。

  • オブジェクト指向の単体テスト手法について学びます。単体テストとは、物事を分離してテストすることを意味します。Roy Osherove のArt Of Unit Testingは、.NET 開発者が始めるのに最適な場所です。

  • アーキテクチャ レベルの TDD 戦略について学びます。あなたが読んだ記事で、あなたは確かに小さなTDDを行う方法についてのアイデアを得ましたが、よりグローバルなアプローチが必要です: 最初に何をどの順序でTDDするべきかなど. GOOSのような本はその分野であなたを助けるかもしれません.

于 2012-11-06T15:56:46.847 に答える