[これは拡張リクエストです]
書けたらいいなぁ
Fixture.Create
フィクスチャをインスタンス化する代わりに
varfixture = new Fixture();
フィクスチャ。作成
NDC of autofixtureでのプレゼンテーションで、すべてのテストメソッドで使用するためにテストクラスのコンストラクターで変数を宣言するのは嫌いだとおっしゃいました。 1つのメソッド内のすべてを確認する方が明確だとおっしゃいました。 良いアイデアだと思うので、あなたのアイデアに従いましたが、問題は、現在、各メソッドで新しいフィクスチャをインスタンス化していることです。私はあまりファンではないので、Fixture.Createを呼び出します。
どう思いますか ?
ええ、私は宣言型の方法を使用できますが、ICustomizeを実装する新しいクラスを作成する必要があるため、私は大ファンではありません。 したがって、1つのテストメソッド内のすべてを確認することはできません。 データがどのように設定されているかを確認するには、クラスに移動する必要があります。 さらに、ほとんどのメソッドはデータを設定する方法が異なるため、テストメソッドごとにICustomizeを実装するクラスを1つ作成したくありません。
6つのキーストロークを節約する以外に、どのように
`` `c#
var foo = Fixture.Create
provide any advantage that
``` c#
var foo = new Fixture().Create<Foo>();
そうじゃない?
余分なキーストロークに関する問題は、 VisualStudioコードスニペットを作成することで解決できます。
答えてくれてありがとうマーク、確かに、コードスニペットは私がより速くタイプすることを可能にします、しかし読みやすさのために、私は読むことを好みます。
Fixture.Create
Fixture.Build
よりも
new Fixture()。Create
new Fixture()。Build
これは少し拡張されていますが、オートフィクスチャを使用すると、心臓がさらに鼓動するようになります。
けっこうだ。 ただし、読みやすさは主観的なものです。
私の経験では、ほとんどのコードベースでは、コードベースや使用するユーティリティライブラリの小さな癖に対応するために、Fixtureインスタンスを何らかの方法でカスタマイズする必要があります。 例として、単純なバニラフィクスチャインスタンスを使用してASP.NET MVCコントローラーをテストすることはできません。これは、(IIRC)これらの基本クラスの特定の部分に循環参照があるためです。
したがって、架空のFixture.Create<T>()
メソッドが単純なバニラフィクスチャインスタンスで機能すると仮定すると、有用性は限られていると思います。
これは私がAutoFixtureを採用したい方向ではないので、この提案を閉じます。
ただし、そのようなラッパーを自分で作成することを妨げるものは何もありません。 実装するのは非常に簡単です。
また、新しいFixture()を保持するというアイデアも気に入っていますが、ライブラリ自体に(プライベート静的インスタンスへの)追加の静的ショートカットもあります。 ラッパーや拡張メソッドを作成するのは簡単ですが、管理(名前空間など)してプロジェクトからプロジェクトに引き継ぐのは少し面倒です。
ありがとう、