2008-09-11 5 views
7

Sıfırlanacak bir XmlDocument üzerinde çağrılan SelectNodes() için mümkün mü?Bir XmlDocument üstündeki seçme düğümleri null değerini döndürür mü?

Benim çıkmaz ben% 100 birim test kodu kapsama ulaşmaya çalışıyorum olmasıdır; ReSharper bana SelectNodes() yönteminden null geri dönüşe karşı korunmam gerektiğini söyler, ancak bir XmlDocument öğesinin null (ve bu nedenle, güvenlik kuralımı sınaması ve% 100 birim sınama kapsamına ulaşmanın bir yolu olmadığını) hiçbir şekilde göremiyorum!)

cevap

2

% 100 kod kapsama ulaşmak için gerekli mi? Gerçekten de normal (yani, kontrol edilebilir, test edilebilir) koşullar altında bile mümkün mü?

Biz genellikle using {} bloğu gibi kullanarak "sözdizimsel şeker" yapılar, oluşturulan "gizli" kod yolları olduğunu bulmak kırık soket gibi (bazı çevresel koşul sürece icra edilemez (büyük olasılıkla finally {} veya catch {} blok) veya kırık disk) yol alır. Bir denizci oluşturmak için kendi girişimi boş dönerse

10

, Reflektöre SelectNodes XmlDocumentSystem.Xml.XmlNode en temel sınıf, XmlNode'dan() yöntemini baktığımızda, boş dönebilirsiniz. CreateNavigator() oldukça karmaşıktır ve gerçekten de birkaç koşul altında null değerini döndürür. Bu koşullar hatalı biçimlendirilmiş bir XML belgesinin etrafında görünüyor - bu yüzden SelectNodes() başarısızlığı için test vakanız var.

+0

Hatalı bir belge tamamen ayrıştırılamıyor mu? CreateNavigator içinde gördüğüm sadece geçerli işaretleme – rpetrich

+2

ile uğraşmak gibiydi BenceNavigator() 'null' döndürür, ancak yalnızca belirli XmlNode türleri için (XmlDocument dahil değil). Eğer bir XmlDocument yüklediğiniz ve ayrıştırma zaman atmadım Yani bildiğim kadarıyla gördüğünüz gibi, daha sonra CreateNavigator() null' ve dolayısıyla SelectNodes() problem Yani 'null' –

3

Eğer XmlDocument kendisinde SelectNodes aradığınız ve gerçekten SelectNodes daha türetilmiş sınıf boş döndürmez XmlDocument ve değilse. Eğer soyundan sınıf oluşturmak ve CreateNavigator (XmlNode) yöntemini geçersiz ise

sonra SelectNodes boş geri dönebilirler. Bir EntityReference, DocumentType veya XmlDeclaration düğümünde SelectNodes çağırırsanız

Benzer şekilde, sen, sen sadece yaratmadı bir XmlDocument veya XmlNode% 100 kapsama null Kısacası yanı

alırsınız null için test etmek zorunda.

+2

asla dönecektir 'asla dönecektir: Ben * yaptım * sadece yaratıyorum, bu yüzden kalbimde biliyorum, hiç bir zaman ReturnNodes() null döndüremez. Her ne kadar teknik olarak, * daha sonra yeniden düzenlenecek bir belgenin belgenin dışarıdan geçmesine sebep olur. Tek sorun şu ki, == sıfır ünitesini bir birim testinde test etmenin hiçbir yolu yok. –