Ben her zaman uygulama seviyesi kodu çerçeve seviyesi kodu farklılaştırmak için alışkanlık var, bu yüzden oldukça sık tarif ettiğiniz sorunla karşılaştı: genellikle herhangi bir uygulama seviyesi kodu test edilmeden önce tüm çerçeve seviyesi kodu test etmek istiyorum . Ayrıca, çerçeve seviyesi kodu içinde bile, diğer tüm çerçeve modülleri tarafından kullanılan bazı temel çerçeve modülleri vardır ve temelde bir şey başarısız olursa, başka bir şeyi test etmenin gerçekten bir anlamı yoktur.
Maalesef, test çerçevelerinin tedarikçileri, kreasyonlarının nasıl kullanılması gerektiği hakkında biraz katı fikirlere sahip olma eğilimindedir ve bu fikirleri oldukça korumalıdır, ancak çerçevelerini kullanan kişiler, sorgulamadan amaçlanan kullanımı kabul etme eğilimindedir. Bu sorunludur, çünkü deney ve yeniliği boğar. Başkalarını bilmiyorum, ama bir şeyi tuhaf bir şekilde yapma özgürlüğüne sahip olmayı ve sonuçların, ilk etapta işlerimi yapıyorum.
Bu yüzden, bence, test bağımlılıkları harika bir şey olurdu ve bunun yerine, testlerin hangi sırayla yürütüleceğini belirleme yeteneği bir sonraki en iyi şey olacaktır.
Test siparişi konusunu ele almanın tek yolu dikkatli bir adlandırmadır, böylece test çerçevelerinin testleri alfabetik sırayla yürütme eğiliminden yararlanmaktır.
Bunun Visual Studio'da nasıl çalıştığını bilmiyorum, çünkü henüz C # ile kapsamlı testler içeren bir şey yapmadım, ancak dünyanın Java tarafında şu şekilde çalışıyor: Bir projenin kaynak klasörü altında genellikle iki alt klasörümüz var, biri "ana", üretim kodunu içerir ve biri "test", test kodunu içerir. "Main" altında, kaynak kodumuzun paket hiyerarşisine tam olarak karşılık gelen bir klasör hiyerarşisi vardır. Java paketleri kabaca C # ad alanlarına karşılık gelir. C #, klasör hiyerarşisini ad alanı hiyerarşisiyle eşleştirmenizi gerektirmez, ancak bunun yapılması önerilir.
Şimdi, insanların Java dünyasında genellikle yaptıkları şey, "test" klasörü altında "ana" klasör altında bulunan klasör hiyerarşisini yansıtmalarıdır , böylece her test test ettiği sınıfla aynı pakette bulunur. Bunun ardındaki mantık, test sınıfının sıklıkla test edilen sınıfın paket-özel üyelerine erişmesi gerektiğidir, bu nedenle test sınıfının test edilen sınıfla aynı pakette olması gerekir. Dünyanın C # tarafında ad alanı-yerel görünürlük diye bir şey yoktur, bu nedenle klasör hiyerarşilerini yansıtmak için bir neden yoktur, ancak C # programcılarının klasörlerini yapılandırırken aynı disiplini az ya da çok takip ettiğini düşünüyorum.
Her durumda, test sınıflarının test edilen sınıfların paket yerel üyelerine erişmesine izin verme fikrini yanlış yönlendirilmiş olarak buluyorum, çünkü uygulamaları değil, arayüzleri test etme eğilimindeyim. Bu nedenle, testlerimin klasör hiyerarşisinin üretim kodumun klasör hiyerarşisini yansıtması gerekmez.
Yani, yaptığım şey, testlerimin klasörlerini (yani paketleri) şu şekilde adlandırmaktır:
t001_SomeSubsystem
t002_SomeOtherSubsystem
t003_AndYetAnotherSubsystem
...
Bu, "SomeSubsystem" için yapılan tüm testlerin "SomeOtherSubsystem" için yapılan tüm testlerden önce yürütüleceğini garanti eder ve bu işlemlerin tümü "AndYetAnotherSubsystem" için yapılan tüm testlerden önce yürütülür ve bu böyle devam eder.
Bir klasör içinde, ayrı ayrı test dosyaları şu şekilde adlandırılır:
T001_ThisTest.java
T002_ThatTest.java
T003_TheOtherTest.java
Elbette, modern IDE'lerin sadece birkaç tıklama ve tuş vuruşuyla tüm paketleri (ve tüm alt paketleri ve bunlara referans veren tüm kodu) yeniden adlandırmanıza izin veren güçlü yeniden düzenleme yeteneklerine sahip olmasına büyük ölçüde yardımcı olur.