2010-06-10 14 views
9

MSTest UnitTest projemde, herhangi bir test yapmadan önce, bazı komutları çalıştırmam gerekiyor. Global.asax'ın web tabanlı projeler için olduğu gibi bir test var mı?Birim Testleri için Global.asax?

"Bazı komutları çalıştır" dediğimde, DOS komutlarını kastetmiyorum, ancak bazı kodları çalıştırmam gerektiğini açıkça belirtmeliyim. Sizden

cevap

16

yılında .dll'nin konumunu belirtmek NUnit kullanmak senin testleri. Eğer durum gerçekten de ise böyle ClassInitializeAttribute ile birim test sınıf içindeki bir yöntem beyan etmelidir:

[ClassInitialize] 
public void ClassSetUp() 
{ 
    //initialization code goes here... 
} 

Edit: ayrıca mecliste başka testler öncesinde çalışacak AssemblyInitializeAttribute yoktur

+3

+1, wow, 'AssemblyInitializeAttribute' – tster

+0

'AssemblyInitializeAttribute' hakkında tam bir fikrim yoktu. Bir demet teşekkürler, kendinize yeşil bir onay işareti var. – AngryHacker

+0

Şimdi çalışmasını sağlamak için imzayı değiştirmem gerekiyordu: "public static void ClassSetUp (TestContext ctx)" – Apolo

1

özelliklerini yansıtmak ve sonra orada ayıklama alanı size özelliklerinde ayıklama menüsünü gördüğünüzde hata ayıklama başlattığınızda sizin için bazı şeyleri yapmak için harici bir program başlatabilirsiniz argümanlar

DÜZENLEME belirtebilirsiniz . Bu, test projenizin bir örneğini başlattığınızda tetiklenir. Komut satırı argümanları kutusuna komut satırı argümanlarını da belirtebilirsiniz. Örneğin

Ben harici bir program olarak NUnit belirtmek ve Doğru anladıysam, başlamadan önce biraz başlatma kodu çalıştırmak için gereken komut satırı argümanları

+0

Harici komutları çalıştırmak yerine bir kod yürütmek istiyorum. – AngryHacker

+0

Ve oluşturduğunuz bir .exe dosyasını çalıştırmanızı engelleyen nedir? Bir hata ayıklama oturumu üzerinde başlayacak bir exe içine yürütülmesi gereken kodunuzu derleyebilirsiniz veya bir şey eksik mi, çünkü bu sizin sorununuz için iyi bir çözüm olduğunu düşünüyorum. – Chino

+0

Testlerden herhangi biri başlamadan önce bir kod çalıştırmam gerekiyor. Kod, bazı testlerde daha sonra çağrılacak bazı sınıflarda bazı statik yöntemlerdir. Bu yüzden testlerin herhangi birinden önce bazı kodları çalıştırmam gerekiyor. – AngryHacker

3

Birim test çerçeveleri, genellikle tüm test fikstürü ve bireysel testler için kurulum ve "yıkma" yöntemlerini destekler. MSTest Eğer bu özelliklere sahip çalıştırılacak hangi yöntemler belirtmenizi sağlar:

[ClassIntialize()] 
public void ClassInitialize() { 
    // MSTest runs this code once before any of your tests 
} 

[ClassCleanup()] 
public void ClassCleanUp() { 
    // Runs this code once after all your tests are finished. 
} 

[TestIntialize()] 
public void TestInitialize() { 
    // Runs this code before every test 
} 

[TestCleanup()] 
public void TestCleanUp() { 
    // Runs this code after every test 
} 

sınıf initialize ve ASP.NET birim testler yapıyorlar eğer temizleme yöntemleri ile dikkatli olun, Having. o ClassInitializeAttribute belgelerinde söylediği gibi:

Bu nitelik, yani ASP.NET birim testlerinde [HOSTTYPE ("ASP.NET")] özniteliği ile herhangi bir testi kullanılmamalıdır. IIS ve ASP.NET'in vatansız yapısı nedeniyle, ile özdeşleştirilen bir yöntem, bu özellik test çalıştırması başına bir kez 'dan daha fazla çağrılabilir.

+0

ASP.NET birim testleri hakkında iyi bir ek! Bir temel sınıfta [TestInitialize] tanımlayarak etrafında çalıştım. – Jowen