Saya sedang menulis beberapa kode async yang sangat sederhana. Hanya menyimpan file di luar utas.
Saya ingin menguji kode ini menggunakan kerangka kerja pengujian unit MSTest di Microsoft Visual Studio Team System 2008.
Bagaimana saya melakukan ini?
Saya ingin memblokir metode pengujian secara sederhana sampai metode tersebut kembali. Saya dapat membayangkan beberapa cara untuk melakukan ini, tetapi saya terpesona tidak ada praktik terbaik atau kelas penolong di sekitar ini.
Saya melihat banyak hal untuk Silverlight, tetapi tidak ada yang umum.
.net
unit-testing
Kevin Moore
sumber
sumber
Jawaban:
Visual studio 2012 (sebelumnya dikenal sebagai "Visual Studio 11") memperkenalkan dukungan untuk tes async . Ini terlihat seperti ini:
[TestMethod] public async Task FooTest() { var result = await SomeAsyncOperation(); Assert.IsTrue(someCondition); }
Sebagaimana dicatat di komentar, yang
Task
kembali jenis penting . Ini tidak akan berfungsi jika Anda mendeklarasikan metode sebagai kembalivoid
.sumber
Task
tipe pengembalian adalah wajib -void
tidak akan berfungsi (setidaknya tidak pada pembaruan VS2013 4)void
metode -kembali async tidak dapat ditunggu)Alih-alih memanggil metode System.IO secara langsung, coba gunakan pustaka SystemWrapper sebagai gantinya. Kemudian dalam pengujian Anda, Anda dapat meniru panggilan sesuai keinginan, mengembalikan apa pun yang Anda suka ke pengujian, termasuk kondisi kesalahan, dan memverifikasi bahwa logika Anda berfungsi seperti yang diharapkan.
Jika Anda ingin melihat contohnya, lihat posting blog ini yang menunjukkan bagaimana hal itu dapat digunakan dengan RhinoMocks.
sumber