Otomatik Mühendis
TransactionScope ile Test Verilerini İzole Etmek
Entegrasyon testlerini yazarken yapmamız gereken ama canlı veritabanında çalışmadıkça aksattığımız o minik konu (veritabanını bulduğumuz gibi bırakmak) var ya işte bu yazıda onun kolay yolundan bahsedeceğiz.
Kodun en ufak scope’larına kadar giren unit testlerimizi yazdıktan sonra, happy path’i kontrol ettiğimiz entegrasyon testlerine sıra geldiğinde özellikle veritabanı entegrasyonunda eklediğimiz, güncellediğimiz hatta sildiğimiz verileri, test ortamını eski durumuna getirebilmek için silmemiz, güncellememiz hatta eklememiz gerekir. Bu rollback işlemlerini yazmak yerine System kütüphanesi içerisinde ki TransactionScope‘u kullanabiliriz.
TransactionScope test başlangıcında oluşturulup, bitiminde dispose edilerek kullanılabilir hatta NUnit test framework’un bize sağladığı ITestAction interface’i ile bunu sadece bir attribute çağrısına çevirebiliriz.
Aşağıdaki gibi kendi Isolated attribute’umuzu yazdıktan sonra…
İzole etmek istediğimiz test case’lerde bu attribute’u kullanabiliriz.