2009-10-05 21 views
1

在VS 2008中使用NUnit 2.5,我不確定如何在設置某個條件時測試一個函數return;。有沒有符合我的目的的Assert方法,還是這是不可測試的?如何測試「if(somecondition)return」;聲明?

+0

函數的類型是什麼? – Ikke 2009-10-05 09:20:32

+0

這個方法到底做了什麼?在應該能夠測試的方法的其餘部分中應該進行某種操作? – 2009-10-05 09:24:22

回答

4

嗯,大概有一些可觀察到的差異之間的函數簡單地返回,並且它在返回之前做一些事情。測試可觀察到的差異。

如果有不是它剛剛返回,它不這樣做,然後要麼處理一般「難以測試」位的代碼(例如緩存)之間可觀察到的差異,其中效果是不起作用的,或者你應該問自己爲什麼你首先得到了這些代碼。

1

return聲明後的代碼是什麼?它是否修改任何數據?我通常會檢查後的數據是否在之後,該聲明是未觸及的。

給你舉個例子,如果我遍歷遞歸基於以上節點的名稱某些條件一棵樹,我會明確地檢查了走訪應該已經訪問過

  1. 節點,並且,
  2. 節點應該不是已訪問過不是訪問。
0

也許你應該考慮使用模擬對象?

例如使用Moq,你可以這樣類似:

// Called at least once 
mock.Verify(foo => foo.Execute("ping"), Times.AtLeastOnce()); 
0

有時,當你擁有其唯一的工作就是採取一個或多個對象,委託一些調用的函數,你會遇到這樣的事情,然後返回。

一種測試Mocks的方法 - 創建傳入對象的模擬,檢查模擬以確保預期的調用實際上已經完成(這是您的函數的目的)。

如果在返回之前沒有進行預期的調用,那麼測試將失敗,否則它會通過。

不過要小心,這種測試調情很危險地接近實施的知識。