[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.
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,