2016-01-26 20 views
22

C# 'daki Akıcı Onaylamaları kullanarak geçersiz kılınmış bir operatör için bir birim testi yazmaya çalışıyorum. Bu sınıftaki işleçten daha büyük olan, nesnelerden herhangi biri boşsa bir istisna atması gerekir.Eşitlik testlerinde istisnai olup olmadığını test etmek için Akıcı Değerlendirmeler nasıl kullanılır?

Genellikle Akıcı Değerlendirmeler kullanırken, yöntemi bir eyleme koymak için bir lambda ifadesi kullanırdım. Daha sonra eylemi çalıştırır ve action.ShouldThrow<Exception>'u kullanırdım. Ancak, bir operatörün lambda ifadesine nasıl yerleştirileceğini anlayamıyorum.

NUnit'in Assert.Throws(), Throws Kısıtlaması'nı veya tutarlılıklar için [ExpectedException] özniteliğini kullanmamayı tercih ediyorum.

cevap

33

Bu yaklaşımı deneyebilirsiniz.

[Test] 
public void GreaterThan_NullAsRhs_ThrowsException() 
{ 
    var lhs = new ClassWithOverriddenOperator(); 
    var rhs = (ClassWithOverriddenOperator) null; 

    Action comparison =() => { var res = lhs > rhs; }; 

    comparison.ShouldThrow<Exception>(); 
} 

Yeterince düzgün görünmüyor. Ama işe yarıyor.

Veya iki satır

Func<bool> compare =() => lhs > rhs; 
Action act =() => compare(); 
yılında
İlgili konular