Sadece bir test projesi oluşturmak ve bazı test yöntemleri yazmak bir tür TDD'dir, ancak tecrübelerime göre, bilinen bir API'nin bulunduğu bir kütüphane üzerinde çalışmadığınız ve yöntem çağrılarının doğrudan kullanıcı tarafından beklenen bir şeye karşılık gelmediği sürece çok yardımcı olmaz. . Doğru testler listesi bulmanız gerekir ve önemsiz olmayan bir uygulama için bunu yapmak gerçekten zor olabilir.
SpecFlow'u denemenizi tavsiye ederim - testleri uygulamadan güzel bir şekilde ayrılmış olarak tanımlar ve özellik dosyalarının yapısı sizi gerçekten neyi test ettiğinizi düşünmeye zorlar.
Bir özellik tanımladığınızda,
When a user is saved
Then the user should exist
Bu noktada bir kod dosyasında olmadığınız için, kullanıcı oluşturmak için hangi yöntemin çağrıldığı veya hatta hangi sınıfta uygulandığı gibi uygulama ayrıntılarını düşünmek istemezsiniz. Farklı uygulamalar seçmek için etiketleri kullanabilirsiniz, bu nedenle "kullanıcı kaydedildi" nin CreateUser'a bir çağrı yapılması veya bir tarayıcı açılması ve bir form göndermesi anlamına gelmez.
Tanımlanan özelliklere sahip olduğunuzda, tüm testler oluşturulur ve adım tanımlarını ve test edilen gerçek uygulama kodunu uygularken geçmeye başlar.
Basit bir uygulama için sadece özellik dosyaları oluşturabilirsiniz, ancak daha karmaşık bir şey için önceden daha eksiksiz bir spesifikasyon bir araya getirmek yararlıdır. Bunun için bir iPad mindmapping uygulaması kullanıyorum, ancak en rahat olduğunuz aracı kullanabilirsiniz.
"Kullanıcı kaydı" gibi üst düzey özelliklerin bir listesiyle başlayın. Bunlar doğrudan test yazmak için çok geniş olma eğilimindedir, bu nedenle bunları açıkça tanımlanabilen ve genellikle "Kullanıcıyı kaydet" veya "Mevcut kullanıcıyı görüntüle" gibi belirli bir kullanıcı işlemiyle eşleştirebilen alt özelliklere bölün.
Bu alt özelliklerin her biri, özelliğin çalışıp çalışmadığını tamamen tanımlayan, "Geçerli bir kullanıcıyı kaydedebilir" ve "Yinelenen kullanıcı adıyla bir kullanıcı kaydedilemiyor" gibi şeylerin birlikte tanımlandığı senaryoların bir listesine ihtiyaç duyacaktır.
Bu listeyi oluştururken, yapının nerede ayarlanması gerektiği genellikle netleşecektir - bir özellik için herhangi bir senaryo testi bulamazsanız veya bir özellikte çok fazla sonuç alırsanız, bu özellik muhtemelen yanlış seviye ve bölünmesi veya değiştirilmesi gerekiyor.