0

単体テストと TDD アプローチを作成するためのテスト フレームワークの使用に着手したところです。NUnit が最良の選択肢でしたが、XUnit に行くのが良いと感じた経験がありませんでした。私が持っている MVC の本で調べてきた MS Unit のテスト方法を XUnit の同等のものに置き換えようとしていて、すでにつまずいています。

具体的には次のとおりです。 インデックスなどのビュー コレクションのエントリのリストをテストします。

CollectionAssert.AllItemsAreInstancesOfType((ICollection)result.ViewData.Model,typeof(MyObject));  (from MVC unleashed book)

XUnitでこれをどのように行いますか、またはこのように行うことはできませんか?

XUnit のドキュメントが不足していて、NUnit の方が適切なオプションであるかどうか疑問に思っています........

また、テスト コードはほぼ独自の言語のようです。すべてのプロジェクトで実行できる共通のテスト セットがあると言っても過言ではありません。

TDD に関して..概念は理解できますが、テスト自体は、テスト内容とテスト内容において単体テストと同じですか? 実際の違いは、それらが書かれたとき以外にはわかりません!

4

3 に答える 3

3

私はmspecのファンです。これらの質問を参照してください

便利なリンク :

MSpec インストーラー

NUnitの上で実行されます。次のようなもののためのmvc 拡張メソッドもあります

result.ShouldBeAView().and().ShouldHaveModelOfType<T>()

コントローラーのテストは次のようになります

[Subject(typeof(JobsController))]
public class when_viewing_imdex_page : specifications_for_jobs_controller
{
    static ActionResult result;

    Establish context = 
        () => result = controller.Index();

    It should_return_a_view_result = 
        () => result.ShouldBeAView();

    It should_return_a_view_with_formviewdata = 
        () => result.ShouldBeAView().And().ShouldHaveModelOfType<IList<Job>>();

    It should_contain_a_list_of_jobs = 
        () => result.Model<IList<Job>>().ShouldNotBeEmpty();
}
于 2011-05-05T16:46:25.700 に答える
0

XUnitについてはわかりませんが、NUnitにはコレクション制約があり、このNUnitを見てください

あなたの例では、このコードを使用できます

Assert.That((ICollection)result.ViewData.Model, Is.All.InstanceOf<MyObject>());
于 2011-05-05T16:46:27.823 に答える
0

NUnit しか使用していないので、どのテスト フレームワークを使用すべきかについてコメントするのは不公平だと思いますが、私にとっては常にそれで十分です。

ただし、2番目と3番目のポイントについては。ほとんどのテストは非常に似ていますが、それが TDD のポイントであり、ベースから開始し、「それ以上でもそれ以下でもない」までリファクタリングを続けます。

テスト駆動開発と開発後のテストはどちらも単体テストの一種です。しかし、TDD 内では、テストが開発を推進し、記述したすべての行に目的があり、完全にテストされていることを確認します。

欠点があります。場合によっては、テスト前 (特に開始時) にコードを作成する必要があるため、テスト方法を理解することができます。そのため、開発には前述の両方のタイプが少し含まれていると言っても過言ではありません。

最終的なテスト実行で何百ものテストがアプリケーションでパスするのを見ることから得られる満足感以外の何物でもないとしても、TDD やあらゆる形式の自動テストは、間違いなく努力する価値があります。

于 2011-05-05T16:57:10.877 に答える