每當文件在磁盤上發生更改時,我都想運行我的PHPUnit測試(或至少它們的子集)。非常類似於你可以用「grunt watch」做的事情。我有一個項目,我擁有JS和PHP,並使用Grunt。在那裏我掏出PHPUnit使它運行在使用grunt watch的JS測試之上。雖然這很好,但在PHP only項目中這樣做很麻煩。我需要引入grunt,並添加對節點的依賴。另外我有很多這樣的PHP項目。因此一個更簡單的解決方案是爲了。在變化時運行PHPUnit測試
回答
對於PHPUnit示例,您可以使用inotifywait
,請參閱https://speakerdeck.com/rowan_m/building-better-developers-2?slide=31。
我發現了phpunit-testrunner節點包,這對我的問題有用。每個PHP項目一個配置json文件,然後可以由安裝了節點包的任何人使用。也跨平臺。仍然需要節點,所以不是一個理想的解決方案。
我已經寫了這樣的一篇博客文章而回:http://edorian.github.io/2010-03-11-running-your-unit-tests-everytime-you-save-a-file/
最基本的命令是:
pywatch phpunit .
這意味着「監視該目錄下,下面的所有文件如果其中一個更改運行PHPUnit「。
如果你有大量的文件在那裏(資產等),可以得到緩慢,更好/更快的版本是:
find -name '*.php' | xargs pywatch "./runSuite.sh"
只監控更改.php
文件
或者只是'pywatch「./runSuite.sh」./tests/*/*。php' – Kzqai
我不知道如何構建python包,我想我應該對bootstrap.py和setup.py做些什麼,但是你能給我一些提示嗎? 謝謝 –
安裝呻吟使用https://github.com/SaschaGalley/grunt-phpunit
然後,您將使用watch任務設置phpunit任務。這就是我現在的做法。
在PHPStorm中,您可以配置文件查看器,在文件修改時爲您執行shell命令。例如,你可以有一個File Watcher,它將觸發php文件修改,並將運行帶有所有必要命令的phpunit命令。
有關文件看守更多信息,可以JetBrains的網站幫助頁面上找到:https://www.jetbrains.com/phpstorm/webhelp/using-file-watchers.html
一個死簡單的方法來做到這一點,利用inotifywait和bash腳本:
#!/bin/bash
while true; do
FILE=$(inotifywait --exclude=".*.*sw*" --exclude="4913" ./ --format "%w%f" -e close_write) &&
clear &&
phpunit --color $FILE
done
然後你只需運行在一個終端(或者你想要的),你很好。我正在運行tmux,所以我只是設置了一個堆疊窗格,並有一個小窗口來查看我的測試結果。只需在您的測試所在的目錄中運行此腳本。
適合我。另外,這個腳本是Vim友好的(Vim在保存期間創建一個文件,4913,這個腳本忽略它)。
它完全受到了來自網絡各個地方的啓發 - 甚至可能來自其中一些答案。
這是一個非常簡單和偉大的工作解決方案。謝謝。 –
如果您想遞歸觀看項目文件夾,只需使用'--recursive'選項運行inotifywait。 –
我發現這個溶液使用節點+吞
0. install node
1. npm init
2. npm install gulp --save-dev
創建gulpfile.js,並把這個
var gulp = require('gulp'),
util = require('util'),
exec = require('child_process').exec;
gulp.task('phpunit', function() {
exec('phpunit -c my_project_name/App', function(error, stdout) {
util.puts(stdout);
});
});
gulp.task('default',['phpunit'], function() {
gulp.watch('my_project_name/**/*.php', ['phpunit']);
});
my_project_name /應用程序是所有源代碼
如果添加路徑擴展將此行添加到默認任務
gulp.watch('my_project_name//*.otherext',['phpunit']);
後編輯PHP文件運行PHPUnit的測試
您可以使用節點watch
這是相當甜蜜:
運行npm init
建立包(需要一分鐘),然後
npm install --save-dev watch
然後編輯您的package.json
文件以包含這兩個條目:
"scripts": { "test": "bin/phpunit tests --color", "test:watch": "watch 'npm run --silent test' ." },
然後觸發與看:
npm run test:watch
(信貸由於this interesting article)
但是,這將運行*所有*測試,在我們的情況下,這意味着他們將運行約20分鐘。 – burzum
我創建了一個解決方案來處理這個問題非常 「What's Changed?」 總之,有些情況下你有一些非常大的測試套件,並且你只想運行與已經改變的類相關的測試。
您可以通過運行composer require --dev icyapril/whats-changed
有了這個地方只是運行./vendor/bin/whatschanged
通過作曲家拉這隻有在文件中上次提交或在您的工作目錄將被運行改變。魔法!
默認情況下,它需要'git'安裝在特定的路由上。 'private $ binary ='/ usr/bin/git';' 但即使這樣,一些東西並不是開箱即用的。 https://github.com/IcyApril/WhatsChanged/issues/3 –
也許你可以試試phpunit-watcher
。 https://packagist.org/packages/spatie/phpunit-watcher
首先,安裝phpunit-watcher
與composer require spatie/phpunit-watcher --dev
,然後修改composer.json
在scripts
屬性添加一個項目:composer test
:
{
"scripts" : {
"test" : "./vendor/bin/phpunit-watcher watch --bootstrap vendor/autoload.php tests/"
}
}
然後,您可以運行測試用例。
有時,您應該運行composer run test --timeout=0
,否則該過程將在300秒後終止。
- 1. Phpunit未運行Symfony測試
- 2. 如何通過Jenkins運行phpunit測試時設置$ _SERVER ['']變量
- 3. 如何在PHPUnit + Selenium中運行測試?
- 4. 不在PHPUnit中運行一些測試?
- 5. 如何在Windows中運行PHPUnit測試?
- 6. 如何在phpunit中運行目錄結構化測試?
- 7. PHPUnit進行測試
- 8. PHPUnit進行測試
- 9. 開發PHPUnit:如何運行測試
- 10. 運行PHPUnit的測試用例
- 11. PHPUnit:從實例運行測試
- 12. 運行PHPUnit測試Yii框架
- 13. 以某種順序運行PHPUnit測試
- 14. 在yii框架中運行phpunit測試時出錯
- 15. PHPUnit - 通過命令行測試運行器運行特定測試套件
- 16. 在運行Web測試時參數化負載測試?
- 17. PhpStorm測試:無法選擇PHPUnit來運行測試
- 18. phpunit:單一測試運行時通過,當所有測試運行時都失敗
- 19. 「沒有d-BUS守護進程運行的」 運行PHPUnit測試
- 20. 作爲一個羣組運行時,PHPunit測試失敗
- 21. 使用PHPSTORM運行測試時發生PHPUNIT錯誤
- 22. PHPUnit致命錯誤:運行測試時需要()
- 23. PHPUnit進行測試交互
- 24. PHPUnit性能/測試超時
- 25. 在運行測試/單元測試時運行rspec
- 26. 變化值在運行時
- 27. 嘗試在Symfony 2.8中執行PHPUnit測試時出錯
- 28. 用phpunit測試
- 29. CakePHP PHPUnit測試
- 30. 在laravel中執行phpunit測試
必須爲此安裝inotify-tools。也不是Windows使用同事友好。我在使目錄中的所有PHP文件正常工作時遇到問題。你能提供一個例子嗎? –