Tek onaylama testi DRY'yi ihlal ediyor mu?
Hayır, ama ihlali teşvik ediyor.
Bununla birlikte, iyi nesne yönelimli tasarım, birim testleri için pencereden dışarı çıkma eğilimindedir - çoğunlukla iyi bir nedenden dolayı. Ünite testlerinin birbirinden izole edilmesi daha önemlidir, böylece test izole olarak sorgulanabilir ve gerekirse diğer testleri kırmamanız için güvenle düzeltilebilir. Temel olarak, test doğruluğu ve okunabilirliği, boyutundan veya sürdürülebilirliğinden daha önemlidir.
Açıkçası, açıkladığınız nedenlerden ötürü test kuralı başına tek bir iddiaya hayran olmadım: okunması zor, yanlış boyanması kolay ve refactor varsa düzeltmesi zor olan çok sayıda kazan plakası koduna yol açar (bu da sizi daha az yeniden yönlendirmeye yönlendirir).
Bir işlevin belirli bir giriş için "foo" ve "bar" listesini döndürmesi gerekiyorsa, ancak herhangi bir sırayla, her ikisinin de sonuç kümesinde olduğunu kontrol etmek için iki ek kullanmak mükemmeldir. Başın belaya girdiği nokta, tek bir testin iki girişi veya iki yan etkiyi kontrol etmesi ve ikisinden hangisinin hataya neden olduğunu bilmemenizdir.
Bunu Tek Sorumluluk İlkesinde bir varyasyon olarak görüyorum: Bir testin başarısız olmasına neden olabilecek tek bir şey olmalı ve ideal bir dünyada değişimin sadece bir testi kırması gerekir.
Ama sonunda bir değiş tokuş. Tüm kopya pastey kodunu korumak için daha fazla zaman harcıyor musunuz veya testlerin birden fazla kaynak tarafından kırılabileceği durumlarda kök nedenlerini araştırmak için daha fazla zaman harcayacaksınız. -Bazı-testler yazdığınız sürece, muhtemelen çok fazla önemli değildir. Tek onaylı testler için küçümsememe rağmen, daha fazla testin yanına düşme eğilimindeyim. Kilometreniz değişebilir.