Saya memiliki tes suite tes yang berjalan seperti ini:
[Fact]
public void VerifySomeStuff()
{
var stuffCollection = GetSomeStuff();
Assert.Equal(1, stuffCollection.Count());
}
Tes ini berfungsi seperti yang saya harapkan, tetapi ketika saya menjalankannya xUnit mencetak peringatan:
peringatan xUnit2013: Jangan gunakan Assert.Equal () untuk memeriksa ukuran koleksi.
Namun, tidak ada alternatif yang disarankan dalam peringatan tersebut, dan pencarian Google membawa saya ke kode sumber di xUnit untuk pengujian yang memverifikasi peringatan ini dicetak.
Jika Assert.Equal()
bukan cara yang tepat untuk memverifikasi panjang koleksi, apakah itu?
Untuk memperjelas: Saya menyadari bahwa saya bisa "menipu" xUnit agar tidak mengeluarkan peringatan ini dengan misalnya mengekstrak variabel atau menggunakan Assert.True(stuff.Count() == 1)
sebagai gantinya. Yang terakhir hanya hacky, dan yang pertama terasa seperti jika xUnit misalnya mencoba menghindari beberapa iterasi IEnumerable<T>
, maka ini adalah cara yang salah (karena saya akan mendapatkan petunjuk kompiler tentang itu secara terpisah jika itu adalah masalah), dan xUnit itu sendiri seharusnya tidak pernah mengevaluasi input lebih dari sekali (pada kenyataannya mungkin akan mendapatkan input yang sama terlepas dari ekstraksi variabel, karena cara kerja pemanggilan fungsi C #).
Jadi, saya tidak hanya tertarik untuk menghapus peringatan itu dari keluaran saya. Jawaban atas pertanyaan saya juga menjelaskan mengapa peringatan itu disertakan di perpustakaan sejak awal dan mengapa pendekatan apa pun yang harus saya gunakan lebih baik.
stuffCollection.Count()
dalam variabel terpisah dan meneruskannya ke pernyataan apakah itu memberi Anda kesalahan yang sama?