0
我跟着一個程序教程,並在其中,老師有一堆函數返回一個布爾值來表示成功。它們寫起來就像這樣:什麼時候單元測試合適?
bool SomeFunc()
{
//code....
return true;
}
這意味着您可以編寫單元測試,期待這些功能真實,是表明全功能運行正常的一種方式。對我來說,這樣的工作方式是,如果在該函數內很多不同點,你如果發生錯誤,有一堆爲返回假的東西不同的檢查:
bool SomeFunc()
{
if(!someThing)
return false;
return true;
}
但是,如果不是你只是有一堆的函數中斷言做你的檢查:
bool SomeFunc()
{
assert(someThing, "Error: thing not working");
return true;
}
然後會有一個理由還是單元測試,如果斷言將正好趕上任何錯誤,這個功能呢?我能想到的唯一原因是,如果你想讓你的單元測試在這些函數的發佈模式下工作,那麼你將添加斷言和if語句(因爲斷言通常在發佈模式下被關閉)。
不要只是測試真正的案件返回true。還要確保假案件返回false。做得好就像成功一樣重要。 – user4581301
也是一件重要的事情。除了在上面的第一個例子中測試你的函數返回'true',單元測試可以測試函數是否被執行。一個典型的例子是返回void的函數,但是因此在一行中執行一些其他函數。 – dmi
鑑於'assert'通常在生產版本中是沒有操作的,可能您想要引發異常。 – juanchopanza