調用的代碼編寫測試代碼。如果我有兩個類:ClassA和ClassB,我應該爲其他測試代碼
ClassA的調用上的ClassA ClassB的即公共方法:
public function foo()
{
$this->classB->bar();
}
我的測試覆蓋富 - 但我應該始終編寫測試覆蓋B級還吧?
鑑於代碼直接進行測試im不知道這是否值得嗎?
調用的代碼編寫測試代碼。如果我有兩個類:ClassA和ClassB,我應該爲其他測試代碼
ClassA的調用上的ClassA ClassB的即公共方法:
public function foo()
{
$this->classB->bar();
}
我的測試覆蓋富 - 但我應該始終編寫測試覆蓋B級還吧?
鑑於代碼直接進行測試im不知道這是否值得嗎?
是的,你應該測試吧。你所有的課都應該有自己的測試用例,在這裏你測試他們的公共方法。因此,對於classB,您應該有一個單獨的測試用例,您可以在其中測試方法欄()。
原因是當方法bar()(或bar()調用的classB的另一個方法)發生錯誤時,測試將在方法foo()中失敗,這可能會導致更多的錯誤並導致更多在方法欄()中找到實際的錯誤。在你的例子中,這可能不是一個問題,但在現實世界中,你測試更復雜的代碼。
另一個原因是測試的複雜性。你的測試應該在所有可能的情況下測試你的方法。可以說,函數bar()可以在5種不同的情況下被測試,並且foo()也可以在它自己的5種情況下被測試。如果你只測試foo(),你將不得不寫一個測試來覆蓋5 * 5 = 25的情況。如果foo()更復雜,並且調用另一個方法,讓我們說classB-> bar2()以及另外5種不同的情況,那麼您將不得不編寫一個覆蓋5 * 5 * 5 = 125個例子的測試!編寫3個測試比echach更容易5個例子,而1個測試覆蓋125個例子。而那3個測試也會更容易閱讀和維護。
是的,寫測試。否則,classB :: bar()不可重複使用(或者甚至不可用)。
如果bar是ClassA的私有方法,則不需要。
另一種看待它的方式是根據班級的責任。
這個責任是應該用測試來聲明的。
類可以是ClassA的或ClassB的等
寫測試斷言一類的責任
寫測試斷言B類的職責
再加上認爲會有一個依賴和對象映射
您自然地覆蓋您的依賴關係的測試,然後更高的對象圖追蹤到根
總之
B類需要測試
A類依賴於B類的某些功能需要自己
注意的測試:他們每個人的責任/能力會有所不同
相關提示,也看到了[得墨忒耳定律( http://en.wikipedia.org/wiki/Law_of_Demeter) –