Kısa bir süre önce, tanımlamaları en üst düzeye çıkarmak için testlerimi, sınıflarını ve projelerini adlandırmak için aşağıdaki sözleşmeyi yaptım:
Diyelim ki Settings
sınıfı MyApp.Serialization
isim alanındaki bir projede test ediyorum .
İlk olarak, MyApp.Serialization.Tests
ad alanı ile bir test projesi oluşturacağım .
Bu proje içinde ve tabii ki isim alanında IfSettings
( IfSettings.cs olarak kaydedilmiş ) adında bir sınıf oluşturacağım .
Diyelim ki SaveStrings()
yöntemi test ediyorum . -> Testi adlandıracağım CanSaveStrings()
.
Bu testi çalıştırdığımda şu başlığı gösterecektir:
MyApp.Serialization.Tests.IfSettings.CanSaveStrings
Bence bu çok iyi anlatıyor, ne test ediyor.
Tabii ki İngilizce'de "Testler" isminin "testler" fiili ile aynı olması yararlıdır.
Testleri adlandırırken yaratıcılığınızın bir sınırı yoktur, böylece onlar için tam cümle başlıkları alırız.
Genellikle Test isimlerinin bir fiil ile başlaması gerekir.
Örnekler:
- Algılar (ör.
DetectsInvalidUserInput
)
- Atar (ör.
ThrowsOnNotFound
)
- Will (örneğin
WillCloseTheDatabaseAfterTheTransaction
)
vb.
Başka bir seçenek de "if" yerine "that" kullanmaktır.
İkincisi Bana rağmen tuş vuruşlarını ve ben bilmiyorum çünkü, ne yapıyorum daha tam olarak tarif eder kaydeder olduğunu test davranış mevcut olmakla birlikte, test ediyorum eğer öyle.
[ Düzenle ]
Yukarıdaki adlandırma kuralını biraz daha uzun süre kullandıktan sonra , arayüzlerle çalışırken If önekinin kafa karıştırıcı olabileceğini buldum . Öyle ki, IfSerializer.cs test sınıfı "Open Files Sekmesi" ndeki ISerializer.cs arayüzüne çok benziyor . Bu, testler, test edilen sınıf ve arayüzü arasında ileri geri geçiş yaparken çok can sıkıcı olabilir. Sonuç olarak ben şimdi seçsin Yani üzerinde If önek olarak.
Ayrıca şimdi - sadece test sınıflarımdaki yöntemler için başka hiçbir yerde en iyi uygulama olarak kabul edilmez - "_" benim gibi test yöntemi adları kelime ayırmak için kullanın:
[Test] public void detects_invalid_User_Input()
Bunu okumayı daha kolay buluyorum.
[ Düzenlemeyi Sonlandır ]
Umarım bu daha fazla fikir ortaya çıkarır, çünkü testlerin ne yaptığını anlamaya çalışmak için harcanan çok fazla zaman kazandırabileceği için büyük önem taşıyan testleri adlandırmayı düşünürüm (örneğin, genişletilmiş bir aradan sonra bir projeye devam ettikten sonra) .