2010-07-30 81 views
7

似乎沒有委託給屬性。有沒有一個方便的方法來做到以下幾點?測試屬性是否拋出異常與nunit

Assert.Throws<InvalidOperationException>(
     delegate 
     { 
      // Current is a property as we all know 
      nullNodeList.GetEnumerator().Current; 
     }); 

回答

7

快進四年,NUnit現在支持該(當前版本是v2.6 - 我沒有檢查過這個版本的介紹)。

Assert.That(() => nullNodeList.GetEnumerator().Current, 
    Throws.InvalidOperationException); 
1

爲什麼不說:

Assert.Throws<InvalidOperationException>(
    () => nullNodeList.GetEnumerator().Current); 
+0

IM與C#2.0的工作:/ – atamanroman 2010-07-30 08:36:30

+1

您仍然需要做一個實際的(扔掉),分配和保持{},那麼:(()=> {VAR X = nullNodeList.GetEnumerator()。當前;}) – nashwan 2013-01-31 16:08:27

6
Assert.Throws<InvalidOperationException>(
    delegate { object current = nullNodeList.GetEnumerator().Current; }); 
+0

非常感謝。這很容易(但不是很直觀) – atamanroman 2010-07-30 08:38:40

+0

@Anton嗨安東我想知道這是用來測試公共類的只讀屬性的方法嗎? – Deeptechtons 2012-07-25 05:05:47

1

你可以嘗試將其分配給一個變量或嘗試列舉:

Assert.Throws<InvalidOperationException>(delegate 
{ 
    // Current is a property as we all know 
    object current = nullNodeList.GetEnumerator().Current; 
});