Dostların ünitenin nasıl test edildiğini merak ediyorum ve "beklenen" koleksiyonun "gerçek" koleksiyonla aynı/benzer olduğunu ileri sürün (sipariş önemli değil). Ünite testinin en iyi yolu Koleksiyon?
Bu iddiayı gerçekleştirmek için, benim basit assert API yazdı: -public void assertCollection(Collection<?> expectedCollection, Collection<?> actualCollection) {
assertNotNull(expectedCollection);
assertNotNull(actualCollection);
assertEquals(expectedCollection.size(), actualCollection.size());
assertTrue(expectedCollection.containsAll(actualCollection));
assertTrue(actualCollection.containsAll(expectedCollection));
}
Eh, işe yarıyor. Integers ya da Strings demetini iddia edersem oldukça basit. Örneğin, örneğin Hazırda Bekletme alanlarının bir koleksiyonunu iddia etmeye çalışıyorum, oldukça acı verici olabilir. Collection.containsAll (..), denetimi gerçekleştirmek için eşittir (..) değerine dayanır, ancak yalnızca iş anahtarlarını kontrol etmek için Hazırda Bekletmelerimdeki (..) eşitlikleri her zaman geçersiz kılar. Hazırda bekletme sitesi) ve bu alanın tüm alanları değil. Tabii ki, sadece iş anahtarlarına karşı kontrol etmek anlamlıdır, ancak sadece iş anahtarlarının (örneğin, yeni veri girişi kaydı) değil, tüm alanların doğru olduğundan emin olmak istiyorum. Yani, bu durumda, ben domain.equals (..) ile uğraşmak ve neredeyse koleksiyon.containsAll (..) güvenmek yerine sadece birim test amaçları için bazı karşılaştırıcıları uygulamak gerekir gibi görünüyor.
Burada kullanabileceğim bazı test kütüphaneleri var mı? Koleksiyonunuzu nasıl test ediyorsunuz?
Teşekkürler.
Bu, koleksiyonumun onaylanması için iyi bir yol gibi görünüyor. A, B'yi uzatırsa, hem A hem de B alanlarını dikkate alacağımı varsayalım mı, doğru mu? API belgelerinde bulamıyorum, ancak sanırım bunu test edebilirim. Sadece A alanından değil, B alanlarından gelenleri belirtmek için bir kural belirtmenin bir yolu var mı? – limc
tamam, bu oldukça müthiş ... sadece belgeleri okuyun ve yansıma öğesi kullanmam göründüğünden bu yana ReflectionAssert.assertLenientEquals (..) kullanıyorum. Çok teşekkürler. – limc
@limc. Rica ederim. Alt sınıf alanlarını kontrol etmenin bir yolu olduğundan emin değilim (mümkün olabilir, hiç denemedim). –