單元測試中有沒有任何一點方法,它唯一做的是委託另一個對象的工作?例如:單元測試委派方法
class abc {
...
public void MoveLeft()
{
fallingPiece.MoveLeft();
}
...
}
我正在做一些現有類的單元測試,用於學習目的。例如,爲這個MoveLeft()方法做單元測試似乎有點奇怪。但我不確定如果我完成了Test-First,那該如何呢?
感謝
單元測試中有沒有任何一點方法,它唯一做的是委託另一個對象的工作?例如:單元測試委派方法
class abc {
...
public void MoveLeft()
{
fallingPiece.MoveLeft();
}
...
}
我正在做一些現有類的單元測試,用於學習目的。例如,爲這個MoveLeft()方法做單元測試似乎有點奇怪。但我不確定如果我完成了Test-First,那該如何呢?
感謝
如果我這樣做,你的代碼會中斷嗎?如果會,那麼你需要一個測試來捕捉它。
class abc {
...
public void MoveLeft()
{
// fallingPiece.MoveLeft();
}
...
}
假設:abc是公共/暴露類型,而fallingPiece是依賴項。如果這成立,那麼您需要測試來測試MoveLeft行爲。如果它不是公共類型,那麼您需要對使用abc作爲協作者/依賴項的公共類型XYZ進行測試。你不直接測試它,但它仍然需要測試。
嗯。我沒有想過abc的可訪問性。我會說它不會被外界公開。 FallingPiece確實是一個依賴項。 – 2010-08-13 05:19:59
@devoured ...查看更新。 – Gishu 2010-08-13 05:34:07
我的單元測試的理解是,他們是有保證的方法內部的邏輯保持不變,當你不打算爲它改變了,這種方法沒有邏輯的。在我工作的代碼庫中,我們有很多傳遞方法。表面上,他們是「控制器」類,但在大多數情況下,他們所做的只是傳遞到數據層。
是的,你可以單元測試它們,假設你有辦法模擬fallingPiece
。如果您實際上計劃將MoveLeft方法擴展爲包含邏輯,那麼這可能是一個好主意。
但是,就我上面的評論而言,將內聯方法內聯可能是一個更好的舉措,直到您實際需要圍繞左移引入邏輯爲止。
嗯,我沒有通過內聯方法得到你的意思。你能更清楚一點嗎?感謝 – 2010-08-13 05:18:26
通過內聯,我認爲他意味着你MoveLeft()把fallingPiece.MoveLeft()放在哪裏。這可能不是這樣的好主意,但如果你有abc.MoveLeft並且你用abc.fallingPiece.MoveLeft()替換它。 – derdo 2010-08-13 05:38:43
我同意abc.fallingPiece.MoveLeft()將是不好的形式。在這一點上,我必須看到更多的代碼才能提出建設性意見。然而,看到你的迴應是關於這是一個非公開的方法,無論如何,沒有人會調用abc.fallingPiece.MoveLeft();只是abc中的其他代碼會調用fallingPiece.MoveLeft()。 – arootbeer 2010-08-13 05:44:10
此方法可能失敗的一種情況是,當Abc.MoveLeft被調用時,fallingPiece爲null。建立一個合法的abc並調用abc.MoveLeft的測試用例可能是個好主意。 類似於 CanMoveLeft() {abc abc = new Abc(); abc.MoveLeft(); Assert.That(abc.fallingPice已移至左側) }
爲什麼您首先使用該方法? YAGNI ... – arootbeer 2010-08-13 05:11:30
我需要它。我alraedy有FallingPiece.MoveLeft()代碼運行。 – 2010-08-13 05:17:35