2011-05-21 13 views
25
aşağıdaki IntegrationTest proje yapıya sahip

...Bu dosyayı NUnit Testine nasıl yükleyebilirim?

enter image description here

i bir NUnit Test bu test verilerini 126.txt kullanmak isterseniz, bunu nasıl düz txt dosyası verilerini yüklerim?

Not: Dosya -linked- ve ben C# kullanıyorum (görüntünün belirttiği gibi).

şerefe :)

cevap

34

Dosyanın özelliklerinde belirtebilirsiniz birim testi çıkış klasörüne ve iç kopyalanacak: Bir şekilde bu dosyayı yerleştirebilir

string text = File.ReadAllText("TestData\\126.txt"); 

bir alternatif olarak diğer olasılıklar için arama Google'cuların için değil, bu soru halen cevaplanır

var assembly = Assembly.GetExecutingAssembly(); 
using (var stream = assembly.GetManifestResourceStream("ProjectName.Tests.IntegrationTests.TestData.126.txt")) 
using (var reader = new StreamReader(stream)) 
{ 
    string text = reader.ReadToEnd(); 
} 
+0

tabiki :) wikid :) bunu unutmuştu. Teknik olarak doğru olması için klasörü dahil etme yolunu da düzenledim. Şerefe arkadaşlar. Her zamanki gibi çok takdir edilir. –

+1

_alternative_ way için, dosyanın 'Build Action'ünü' 'Resource'' değil' EmbeddedResource' olarak ayarlamanız gerekir. WPF'nin başka bir şekilde davranması nedeniyle kafam karışmıştı: [link] (https://stackoverflow.com/questions/9419611/how-to-refer-to-embedded-resources-from-xaml) – Ghosthack

+1

İlk Test, ReSharper'ın test koşucusu tarafından test edildiğinde çalışmaz. Dosyayı "AppData \ Local \ JetBrains \ Installations \ ...." dan yüklemeye çalışır.Eğer rahibe kullanılıyorsa, çözüm ilk önce doğru dizine "TestContext.CurrentContext.TestDirectory" kullanmaktır. – emirhosseini

16

: o zaman deney düzeneği ve içine kaynak

DirectoryNotFoundException alırsanız, bu test bin\Debug\... yerine C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common...'da göründüğü için, bu, test adaptörünüzün test proje çıkış dizininiz olmayan bir yoldan çalıştırıldığı anlamına gelir. Ben Test projede TestHelpers statik sınıfta kullandığım böylece o attı

using System.IO; 
using System.Reflection; 

// Get directory of test DLL 
var dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); 

// dir is now "C:\...\bin\Debug" or wherever the executable is running from 

:

bu çözmek için, şöyle Test DLL dizinine bakarak o bin\Debug\... dizini alabilirsiniz harici dosyaları yüklemesi gereken her testte. Kod this answer izniyle karşılanır.

20

Dosyaları ManifestResources olarak değil, yalnızca sistemdeki dosya olarak istemiyorsanız. Daha fazla bilgi ve yorum ile cevap Trouble with NUnit when determining the assembly's directory bakınız: BU SAĞ YANIT ^^^^^ Ayrıca

ilginç NUnit https://bugs.launchpad.net/nunit-vs-adapter/+bug/1084284/comments/3

gelen bilgi olduğunu IS Ama burada hızlı bilgi olduğunu ^^^^^: Files \ test.pdf inşa aksiyon içerikli, test projede sadece bir dosya, yeni

tüm krediler diğer post insanlara giderseniz çıkış dizin kopya kopyalamak

Path.Combine(TestContext.CurrentContext.TestDirectory, @"Files\test.pdf") 

, ama biraz zamanımı aldı Bu cevabı bulmak, bu yüzden bu yazıya cevabı ekliyorum.

İlgili konular