2013-10-05 60 views
3

我有一組PHP項目,其中一些項目依賴於其他項目。所有的都有PHPUnit測試。所有這些都可以通過Composer安裝,並使用composer.json文件指定它們的依賴關係。每個項目的根目錄中都有一個phpunit.xml.dist文件,該文件指向一個bootsrap文件。使用Composer爲項目運行所有PHPUnit測試

現在我有這個項目Foo有一些直接的依賴關係和幾個間接的。對於Foo的CI,我想運行所有的測試,以及它的所有依賴關係。

這是否可以通過Composer完成?如果沒有,是否有一些標準乾淨的方式來做到這一點?

回答

2

作曲家不幫你做任何測試。

我懷疑它可以自動完成。您事先不知道所需庫的測試位置在哪裏。它甚至可能是測試不包含在已發佈的庫版本中,因爲它們不直接用途。

如果你知道你所有的庫都有他們的測試位置,你必須自己編寫一些代碼來收集所有這些測試在一個大的元測試套件中。但我想知道這些是否真的有用。

我在Jenkins和少數內部庫中使用CI,並且當我更改所需庫中的某些內容時,我建立了Jenkins以啓動依賴庫的測試。 dependency graph view plugin正在幫助管理。

4

我想你可以寫一個包含所有東西的TestSuite或者編寫一個遞歸鑽取到所有目錄中查找測試的腳本。

但是,通常情況下,您不會運行庫和依賴項的測試,除非可能在您首次安裝時進行測試。你不應該(讀:不應該)真的改變你的應用程序中的庫或依賴代碼(這有例外),所以一旦你安裝了依賴並運行它的測試,假設它們通過了,它們應該總是通過你沒有改變任何東西。

如果你正在改變依賴代碼,你應該分開做,特別是如果你擁有依賴。我假設你會做這兩個原因之一:修復一個錯誤或添加一個功能。打開依賴項目/文件,編寫一個或多個測試以進行更改,進行更改,確保測試通過,將更改提交到依賴項。然後讓你的應用程序拉下更新後的依賴關係。

它的tl; dr是你不應該擔心運行庫或依賴性測試,因爲它們應該是你在應用程序中沒有碰到的黑盒子。

+0

在我來說,我擁有了很多的依賴關係,我運行他們的測試時,他們換衣服。我與你一起運行所有測試並不是嚴格需要的。然而,這樣做並沒有什麼壞處,這有助於讓一些人放心。請記住我的問題,如果這樣做,而不是我應該這樣做。 –

+0

我知道你問的是怎樣的,我在答案的開頭給出了一些潛在的選擇。但是,如果有人問我如何通過他們的手,我仍然解釋他們爲什麼不應該。這就是說,如果你這樣做是爲了安撫/撫慰人,也許你應該讓那些「一些人」閱讀我的初步答案,這樣你就不必運行所有這些測試。我只是爲了節省時間,壓力和理智。我覺得這是那些不值得的努力的結果之一。 – echosa

0

你可以嘗試composer scripts

{ 
    "scripts": { 
     "test": "phpunit" 
    } 
} 

或許創造makefile,然後調用,採用作曲家

{ 
    "scripts": { 
     "build-all": "make build-all" 
    } 
} 
相關問題