2009-05-15 30 views
33

'da testler oluşturun Nunit'i kullanarak, belirli bir dizindeki tüm dosya isimlerini okuyacak ve her dosya için bir test oluşturacak bir test fikstürü yazabiliyorum.Dinamik olarak NUnit

Dizinde taranan ve tüm testleri yapan bir test yöntemini kolayca yazabilirim, ancak NUnit çalıştırdığımda her bir testi tek tek görmek istiyorum.

Bu mümkün mü?

cevap

46

Ben

bir test durumu var ve sonra tüm okuma GetTestCases yazma böylece

[Test, TestCaseSource("GetTestCases")] 
public void TestFile(string filename) 
{ 
    //do test 
} 

gibi niteliklerin TestCaseSource ile işaretlemek zaman amaçlarına uyan bir yol bulduk dizindeki dosya adları

private static string[] GetTestCases() 
{ 
    return GetAllFilesInCurrentDirectory(); 
} 

NUnit'i başlattığımda, yapılacak testlerin bir listesini alırım. Çalıştır (TestFile altında listelenir).

+0

Güzel ve basit. Bu özellik, dokümanlar (v2.5.2'ye bakın) 'da açıklandığı gibi oldukça esnektir: http://nunit.com/index.php?p=testCaseSource&r=2.5.2 –

+0

NUnit taşları !! İşleri daha basit hale getirdi. Bu özelliği, tümleştirme testleri için kullanıyorum – AksharRoop

+0

ReSharper test yürütücüsünde nasıl çalışır? – moudrick

3

data driven test cases NUnit uzantısını deneyin. Zaman içinde bu dizine dosyaları ekleyerek olacak ve genel testine girdi olarak geçmek dosya adlarına bir dizi yok edilir Eğer

+0

+1 ilginç görünüyor – bendewey

1

, std distrib sonrası v2 RowTest NUnit extension (bölümünü kullanmayı deneyin. 4.7) - Her bir test durumunu - giriş kombinasyonunu tek bir düğüm altında gruplandırılmış GUI'de ayrı ayrı görebileceksiniz.

Eğer Bu dizine dosyaları ekleyerek olacak , ben zamanında elde edilen dosyaların bir liste üzerinde döngüler ve her filepath ile genel test yöntemini çağıran tek NUnit TestCase yazardım. Başarısız olan test dosyası adlarını toplamak için bir collecting parameter kullanın. Her test vakasını ayrı ayrı göremezdiniz, ancak basit bir test kodunu okuyabilirsiniz.

Assert.AreEqual(listOfFailedFiles.Length, 0, PrettyPrint(listOfFailedFiles)) 
+0

Binlerce testiniz olmadıkça, birkaç saat sürebilir. – eocron

0

Bunun biraz belirsiz olduğunu biliyorum, ancak geçmişte, daha sonra bireysel test senaryoları olarak çalıştırabileceğim bir kod oluşturmak için bir betik kullandım.