Autofixture: buat AutoFixture statis

Dibuat pada 28 Agu 2013  ·  4Komentar  ·  Sumber: AutoFixture/AutoFixture

[Ini adalah permintaan peningkatan]

Akan keren jika kita bisa menulis

Fixture.Buat();

alih-alih membuat Instance Fixture
var perlengkapan = Perlengkapan baru();
perlengkapan.Buat();

Dalam presentasi Anda di NDC autofixture, Anda mengatakan bahwa Anda benci mendeklarasikan variabel dalam konstruktor kelas pengujian untuk menggunakannya dalam setiap metode pengujian. Anda mengatakan lebih jelas untuk melihat segala sesuatu di dalam satu metode. Saya mengikuti ide Anda karena menurut saya itu ide yang bagus, tetapi masalahnya adalah saat ini saya sedang membuat Fixture baru di setiap metode dan saya bukan penggemar, saya lebih suka memanggil Fixture.Create();

Bagaimana menurut anda ?

Ya saya tahu, saya bisa menggunakan cara deklaratif, tapi saya bukan penggemar berat, karena saya harus membuat kelas baru yang mengimplementasikan ICustomize. Oleh karena itu, saya tidak akan melihat semuanya di dalam satu metode pengujian. Saya harus menavigasi ke kelas untuk melihat bagaimana data disiapkan. Dan lebih banyak lagi, sebagian besar metode saya memiliki cara berbeda untuk menyiapkan data, jadi saya tidak ingin membuat satu kelas yang mengimplementasikan ICustomize untuk masing-masing metode pengujian saya.

Semua 4 komentar

Selain menghemat 6 penekanan tombol, bagaimana caranya?

``` c#
var foo = Fixture.Create();

provide any advantage that

``` c#
var foo = new Fixture().Create<Foo>();

tidak?

Masalah tentang penekanan tombol tambahan dapat diatasi dengan membuat cuplikan kode Visual Studio .

Terima kasih atas jawaban Anda Mark, Memang, cuplikan kode akan memungkinkan saya mengetik lebih cepat, tetapi untuk keterbacaan, saya lebih suka membaca;

Fixture.Buat();
Fixture.Build();

dibandingkan

Fixture baru().Buat();
Fixture baru().Build();

Ini sedikit peningkatan, tetapi akan membuat jantung saya berdebar lebih kencang saat menggunakan autofixture.

Cukup adil. Namun, keterbacaan adalah hal yang subjektif.

Dalam pengalaman saya, di sebagian besar basis kode, orang harus menyesuaikan instance Fixture dengan satu atau lain cara, untuk mengakomodasi semua kebiasaan kecil dari basis kode mereka, atau pustaka utilitas yang mereka gunakan. Sebagai contoh, Anda tidak dapat menggunakan instance Fixture vanilla biasa untuk menguji ASP.NET MVC Controllers, karena (IIRC) ada bagian tertentu dari kelas dasar yang memiliki referensi melingkar.

Jadi, dengan asumsi bahwa metode hipotetis Fixture.Create<T>() akan bekerja dengan contoh Fixture vanilla biasa, saya menganggapnya kegunaannya terbatas.

Ini bukan arah di mana saya ingin mengambil AutoFixture, jadi saya akan menutup saran ini.

Namun, tidak ada yang mencegah Anda membuat pembungkus seperti itu sendiri; itu akan sangat sepele untuk diterapkan.

Saya juga menyukai ide untuk menyimpan Fixture() baru tetapi juga memiliki pintasan statis tambahan (ke instance statis pribadi) di perpustakaan itu sendiri. Menulis wrapper atau metode ekstensi adalah hal yang sepele, tetapi sedikit merepotkan untuk mengatur (misalnya namespace) dan meneruskan dari proyek ke proyek.
Terima kasih,

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

tomasaschan picture tomasaschan  ·  3Komentar

zvirja picture zvirja  ·  8Komentar

gtbuchanan picture gtbuchanan  ·  3Komentar

JoshKeegan picture JoshKeegan  ·  6Komentar

zvirja picture zvirja  ·  4Komentar