我正在使用與數據庫交互的api。這個API有查詢,加載和保存元素到數據庫的方法。我已經編寫了集成測試,它可以創建一個新實例,然後檢查當我爲該實例執行查詢時,找到正確的實例。這很好。基本上持久化的單元測試代碼 - 我應該打擾嗎?
我想爲此代碼運行更快的單元測試,但是想知道任何單元測試的用處,以及它們是否真的給我提供任何東西。例如,可以說我有一個類來保存我通過API獲得的元素。這是僞代碼,但瞭解我正在使用的api是如何工作的。
public class ElementSaver
{
private ITheApi m_api;
public bool SaveElement(IElement newElement, IElement linkedElement)
{
IntPtr elemPtr = m_api.CreateNewElement()
if (elemPtr==IntPtr.Zero)
{
return false;
}
if (m_api.SetElementAttribute(elemPtr,newElement.AttributeName,newElement.AttributeValue)==false)
{
return false;
}
if (m_api.SaveElement(elemPtr)==false)
{
return false;
}
IntPtr linkedElemPtr = m_api.GetElementById(linkedElement.Id)
if (linkedElemPtr==IntPtr.Zero)
{
return false;
}
if (m_api.LinkElements(elemPtr,linkedElemPtr)==false)
{
return false;
}
return true;
}
}
是否值得編寫模擬m_api成員的單元測試?似乎我可以測試,如果任何各種調用失敗,返回false,並且如果所有的各種調用都成功返回true,並且我可以設置期望,用期望的參數調用各種方法,但這有用嗎?如果我要重構這段代碼,以便它使用一些稍微不同的api方法,但是達到了相同的結果,這會破壞我的測試,我需要更改它們。這種脆弱似乎不是很有用。
我是否應該爲像這樣的代碼進行單元測試而煩惱,還是應該堅持使用集成測試?