在VS 2008中使用NUnit 2.5,我不確定如何在設置某個條件時測試一個函數return;
。有沒有符合我的目的的Assert
方法,還是這是不可測試的?如何測試「if(somecondition)return」;聲明?
1
A
回答
4
嗯,大概有一些可觀察到的差異之間的函數簡單地返回,並且它在返回之前做一些事情。測試可觀察到的差異。
如果有不是它剛剛返回,它不這樣做,然後要麼處理一般「難以測試」位的代碼(例如緩存)之間可觀察到的差異,其中效果是不起作用的,或者你應該問自己爲什麼你首先得到了這些代碼。
1
return
聲明後的代碼是什麼?它是否修改任何數據?我通常會檢查後的數據是否在之後,該聲明是未觸及的。
給你舉個例子,如果我遍歷遞歸基於以上節點的名稱某些條件一棵樹,我會明確地檢查了走訪應該已經訪問過
- 節點,並且,
- 節點應該不是已訪問過不是訪問。
0
也許你應該考慮使用模擬對象?
例如使用Moq,你可以這樣類似:
// Called at least once
mock.Verify(foo => foo.Execute("ping"), Times.AtLeastOnce());
0
有時,當你擁有其唯一的工作就是採取一個或多個對象,委託一些調用的函數,你會遇到這樣的事情,然後返回。
一種測試Mocks的方法 - 創建傳入對象的模擬,檢查模擬以確保預期的調用實際上已經完成(這是您的函數的目的)。
如果在返回之前沒有進行預期的調用,那麼測試將失敗,否則它會通過。
不過要小心,這種測試調情很危險地接近實施的知識。
相關問題
- 1. 「return」聲明
- 2. 如何忽略`if`聲明
- 3. 聲明式ruby編程替換if/then/else/RETURN/end?
- 4. Oracle IF聲明
- 5. EXCEL IF聲明?
- 6. If..then聲明
- 7. Java IF聲明
- 8. Python「IF」聲明
- 9. if echo聲明
- 10. 爲`if`聲明
- 11. Informix-IF聲明
- 12. Awk條件測試聲明
- 13. SOAPUI XPATH聲明AND測試
- 14. If和else聲明,測試用戶帳戶狀態
- 15. 案例聲明VS IF聲明
- 16. Genshi if else聲明
- 17. SQL CONCAT IF聲明?
- 18. MY SQL IF聲明
- 19. SQL IF - ELSE聲明
- 20. IF聲明。變量
- 21. If else聲明JavaScript
- 22. SQL IF/ELSE聲明
- 23. if..else vs if(){return}
- 24. return;這個聲明返回什麼?
- 25. if(this.isSimulation)return;
- 26. 在單元測試中,如果結果是Guid,如何聲明?
- 27. 聲明變量的if else-if語句
- 28. if,else if和else聲明? java
- 29. IF IF聲明與三元(JavaScript)
- 30. PHP IF聲明錯誤
函數的類型是什麼? – Ikke 2009-10-05 09:20:32
這個方法到底做了什麼?在應該能夠測試的方法的其餘部分中應該進行某種操作? – 2009-10-05 09:24:22