2017-01-31 55 views
2

問題: 我有很多測試的龐大代碼庫。 在添加一個測試時,我意識到,那裏的一些現有的單元測試經常覆蓋相同的類/函數兩次或更多。這些測試位於完全不同的位置,因此很難看到他們測試相同的代碼。發現覆蓋相同代碼的冗餘單元測試

此代碼中沒有@covers註釋。所以我不能用它們來識別「冗餘測試」的代碼。

PHPUnit可以處理很多命令行標誌。無用的測試--report-useless-tests。 這將是很好,如果有一些--report-redunant-tests,但我可以看到沒有這樣的選擇。

問題: 你知道我怎麼可以找出哪些代碼beeing測試兩次和單元測試是負責該測試?

背景: 在刪除冗餘測試我想斷言以下事情。

  1. 負責測試的代碼應該是完整的,但儘可能小。
  2. 如果某些功能發生變化,理想情況下您只需調整一個測試用例。
  3. 減少整個單元測試套件的執行時間。

回答

2

檢測「冗餘」測試真的很困難。即使多個測試通過相同的代碼,他們也可以測試不同的場景,所以它們都是相關的。不過,我可以看到多次測試會如何減慢你的過程。

我的建議是看看coverage-*選項。運行覆蓋率報告(例如HTML)可讓您瀏覽代碼並告訴您每個測試涵蓋哪些線/類。這是爲了手動使用,如果你希望自動化,查看其他類型的報告並從中提取你需要的數據。

但是,一個良好的開端是:

phpunit --coverage-html /tmp/coverage 

祝你好運!

+0

非常感謝。當然,他們可能會測試不同的場景,我起初沒有想到:但是我想至少嘗試一下,理解什麼樣的測試「真的」會被淘汰,但是,可能很難分類 我會看看不同的覆蓋選項,PHP選項看起來最有前途。 – cb0

相關問題