PHPStorm 遠端執行單元測試
我的團隊在開發階段中,習慣以 rsync 將本機上的程式碼同步至 測試機 上運行。
因此替功能撰寫測試案例後,必須經過一些設定才能 遠端執行測試案例。
- 新增遠端部署(Development) 設定
- 新增遠端 PHP CLI 執行器 (Interpreter)
- 新增一個遠端調試器(Debugger)
1. 新增遠端部署(Development) 設定
第一個步驟是設定遠端部署,主要目的有兩個:
- 讓 PHPStorm 可以透過 ssh 連接至遠端伺服器(測試機),執行測試案例。
- 設定專案路徑配對,讓 PHPStorm 可以對應「你的本機程式碼位置」與「測試機程式碼位置」。
只要配對好 Development 設定,PHPStorm 就可以直接在測試機上執行 你所指定的測試案例(後面會示範)。
1.1 打開遠端部署(Development)設定介面
遠端部署(Development)的打開步驟依序為:
Tools
>Development
>Configuration
:
1.2 設定 ssh 連線資訊
打開遠端部署(Development)設定介面後,你會看見預設第一個頁籤為
Connection
。Connection
頁籤要設定的是如何讓 PHPStorm 連線登入至遠端伺服器(測試機),以下是必要設定說明:
- Type:選擇
SFTP
- Host:要連接的 Domain Name
- User name:登入遠端伺服器的 User
- Authentication:ssh 認證方式(可參考 SSH 公開金鑰認證)
- Private key path:私鑰位置 (可參考 SSH 公開金鑰認證)
Root path
:遠端伺服器中,專案的根目錄路徑(此為遠端伺服器上的絕對路徑)。- 此設定相當重要,用來對映本地與遠端程式碼。若沒做好對映,後續 PHPStorm 會沒辦法辨認你要執行哪個測試案例。
- Web server URL:遠端伺服器的對外 URL

1.3 設定專案檔案對映(Mappings)資訊
Connection
頁籤設定完成後,接著進入第二個頁籤 Mappings
。Mappings
頁籤用來設定「本機專案」與「遠端專案」的檔案對映關係。
必須設定的項目有:
- Local path: 專案根目錄路徑(本機的絕對路徑)
- Development path: 遠端主機的專案根目錄(注意,此為
Connection
頁籤之Root path
的相對路徑)
完成檔案對映資訊後,PHPStorm 就能辨認你的本機檔案是對映至遠端伺服器的哪個檔案。

2. 新增遠端 PHP CLI 執行器(Interpreter)
注意:執行此步驟前,必須元成第一個步驟 1.新增遠端部署(Development)設定,否則無法進行下去。
此一步驟的目的是:讓 PHPStorm 調用遠端伺服器的
PHP 執行檔
來啟動 測試案例。2.1 打開 PHP 設定頁面
- Mac:PHPStorm 左上角,依序點擊
PHPStorm
>Preferences
>Language & Framework
>PHP
- Windows:左上角,依序點擊 >
Files
>Settings
>Language & Framework
>PHP
接著就能看見 PHP 設定頁面:

2.2 打開新增 PHP-CLI Interpreter 的介面
於 2.1 打開 PHP 設定頁面後,依照下圖順序,打開新增 PHP-CLI Interpreter 的介面:

2.3 設定 Remote PHP Interpreter
若按照步驟 2.2 操作,即可 PHPStorm 跳出新的視窗「Configuration Remote PHP Interpreter」。
這一步驟即需要完成兩項設定:
- 設定 PHPStrom 如何連線至遠端伺服器
- 配置遠端伺服器的 PHP 執行檔 當作 CLI Interpreter。
若您已經完成 1.新增遠端部署(Development)設定,則可以選擇
Development Configuration
選項來替 PHPStrom 設定連線至遠端伺服器的方式。
最後
PHP Interpreter path
則需填入 遠端伺服器的 PHP 執行檔 路徑
(實體路徑)。
設定完成後,點擊 OK。
此時回到原本 PHP 設定頁面,若出現一個
Remote PHP xxx
的 CLI 設定檔,即表設定成功。
3. 新增一個遠端調試器(Debugger)
最後一個步驟,替測試案例新增一個遠端調試器(Debugger)。
3.1 打開 Debugger 設定畫面
打開 Debugger 設定畫面,並點擊

Edit Configuration
:
3.2 打開測試框架的 Interpreter 設定畫面
請一下圖順序,打開新增 PHPUnit 測試框架的 Remote Interpreter 畫面。


3.3 設定 PHPUnit Remote Interpreter
注意:上圖中的
Default configuration file
是遠端伺服器的 phpunit.xml 路徑3.4 設定完成

全部設定完成!
執行測試後,即可看見當前是在遠端伺服器中執行測試:

執行測試後,即可看見當前是在遠端伺服器中執行測試:

您好,您的文章很詳細,謝謝您的分享
回覆刪除想請問您的團隊選擇使用 rsync 同步程式的考量是什麼呢?是因為為了節省下載流量成本嗎?有機會可以稍微分享您的做法嗎?謝謝
另外想請問本文所說可以透過 PHPStorm 執行遠端專案跑測試,這樣測試跑起來在 IDE 的呈現上會慢嗎?謝謝您
當初開發團隊使用 rsync 單純是因為我們有一台測試機,在測試機裡面放置每個人開發中的專案讓 PM 隨時可以進行測試。
刪除而我是為了降低團隊學習測試的成本,才去研究怎麼讓 PHPStorm 進行遠端單元測試。
另外,用 PHPStrom 遠端執行測試的效果其實跟 local 差不多,很即時並不會有卡頓的現象。
如果真的會變慢的話,可能的原因有兩個:
1. local 和遠端之間的網路連線速度很慢
2. 遠端機器的等級很低,造成運行速度緩慢
了解,謝謝回覆
刪除Hotel & Casino - Mapyro
回覆刪除The cheapest 서귀포 출장샵 way to get from Golden Gate Station Casino 구미 출장샵 & Hotel to 익산 출장샵 Golden Gate Station 천안 출장안마 Casino & Hotel costs only $6, and the quickest way takes just 19 충청북도 출장안마 mins.