2017-06-29 52 views
1

我最近將Symfony應用程序升級到了Symfony 2.7,同時我安裝了symfony/phpunit-bridgeSymfony PHP單元橋只顯示棄用聲明一次

安裝symfony/phpunit-bridge後第一次運行phpunit在運行完整測試套件後,我收到了821份棄用聲明。

爲了不等待完整的測試套件運行,我只運行了一個我可以看到的單個測試就是引發了一個棄用問題。我希望這會很快運行,然後讓我發現一個或多個棄用通知正在進行修復。

這第二次我跑phpunit沒有貶低通知。我認爲他的奇怪,並再次跑phpunit,無論是對整個測試套件和個人測試。仍然沒有棄用通知。

我認爲phpunit的更新版本可能會有所幫助。我正在使用4.8.34,並決定切換到5.0。

在下次運行phpunit tada時,發現大量棄用通知。事情看起來不錯。

再次在phpunit的下一次運行中,沒有棄用通知。

我切換回phpunit 4.8.34和... tada ...棄用通知只有一次。

我只在第一次運行symfony/phpunit-bridge deprecation通知時才收到通知。可能會發生什麼導致這種情況?如果測試緩存在運行測試之前清除

因爲我已經注意到,棄用通知更新將提交。

我也注意到這些通知是指調用Symfony\Component\DependencyInjection\Definition::getFactoryService和類似的方法。

應用程序中定義的服務都不使用工廠。這表明供應商在某種程度上做了一些奇怪的事情。

我可以隨時讓棄用通知發生,因此將關閉此問題。

+0

是不是有意? ... https://symfony.com/doc/current/components/phpunit_bridge.html ... – hakre

+0

@hakre不,在使用'symfony/phpunit-bridge'時,應該始終顯示與棄權相關的棄用通知。 –

+0

這裏的問題是,當供應商服務正在構建時(不應該發生的事情),並且已啓動緩存而不再發生時,會拋出棄用通知。 –

回答

2

在容器構建期間您看到的棄用聲明正在觸發。如果緩存已經被構建,那麼它不會再這樣做(即使在開發中,儘管它會花時間看看它是否需要重新構建)。

因此,如果您想查看存在哪些廢棄問題,則需要清除緩存 - 或複製輸出。

注意:大多數情況下,不推薦使用的代碼在框架內部,因此將在不久的將來版本中進行整理,它只是您自己的代碼(或庫),可能有您需要的東西採取行動。

+0

是,我有點困惑後自己也得出了同樣的結論! –