2009-10-14 36 views
5

Tümü: Giriş dosyası gerektiren sınama işlevselliği olan bir birim sınaması var. Bu test VS 2008'in yerleşik birim test özelliği kullanılarak oluşturulmuştur.Bir giriş dosyasıyla birim sınama

Sorunum, dosyanın birim sınaması tarafından bulunabilmesi gerektiğidir. Ancak, test çalıştığında, test sonuçları klasörü altındaki geçici bir "çıkış" dizininden çalışır. Giriş dosyamı bulamıyorum.

Dosyayı "hiçbiri" derleme eylemi ve "kopyalanırsa daha yeni kopyala" nın çıktı dizini seçeneği ile birlikte birim sınama projesine ekledim, ancak kopya normal VS çıkış dizinine (bin) ve ünite test yürütme dizinine değil, bu yüzden dosya bulunamadı. Birim testini kontrol eden herkes için test yapması gerektiğinden, dosyanın yollarını kodlamak istemiyorum. Giriş dosyasını bir çözüm klasörüne koyabiliyordum ve test kodunu ağacın arkasındaki göreceli bir yolu kodlayarak dosyayı "keşfet" edeyim, ama bunun ortak bir sorun olduğunu düşündüm, bu yüzden ben de bir şey eksikti.

cevap

4

Dosyayı, sınama derlemenize kaynak olarak ekleyin. Daha sonra test kurulumunuzda Assembly.GetManifestResourceStream aracılığıyla çalışma zamanında yükleyebilirsiniz.

public static class ResLoader 
{   
    public static string AsString<T>(string resName) 
    { 
     using (var reader = new StreamReader(Assembly.GetAssembly(typeof(T)) 
           .GetManifestResourceStream(resName))) 
     { 
      return reader.ReadToEnd(); 
     } 
    } 
} 

T test düzeneği yer alan herhangi bir sınıftır:

Burada kaynak yüklemek için kullanın uygun bir yöntem bu.

3

Genellikle birim sınamalarımda bunlara erişmeye çalışmak yerine dosya ve veritabanı sonuçları gibi harici kaynakları eşleştiriyorum. Bunu yapmak her zaman kolay değildir. Belki de bize söz konusu yöntemi gösterirseniz, daha fazla test edilebilir bir birim elde etmenize yardımcı olabiliriz.

İlgili konular