2011-03-14 22 views
3

我正在使用PHPUnit 3.5.10,並且嘗試爲三葉草覆蓋生成xml報表時出現問題。PHPUnit - 三葉草覆蓋面上的PHP_Token_Stream錯誤

使用coverage-html導出可以正常工作。另外,如果我從覆蓋率報告中排除了足夠多的文件,它將生成clover.xml文件。但是,當我運行測試套件時,我收到消息「將代碼覆蓋數據寫入XML文件,這可能需要一些時間」,然後執行失敗。每25次我就會收到一次「分段錯誤」消息。

最初,我將此問題追溯到PHP_CodeCoverage :: getSummary()函數,但是當我用白名單限制代碼覆蓋範圍時,程序已經過去了這個錯誤。

接下來,代碼覆蓋率報告似乎在PHP_Token_Stream :: scan()函數中超時。實際上,在處理了大約31k個令牌之後,該方法只會暫停而沒有錯誤消息。

我注意到了我放置的跟蹤代碼的數量以及該方法將處理的令牌的數量的相關性。因此,程序可能會出現內存不足的情況。

我已經創建了一個測試來加載一堆我的代碼文件,並通過加載一個接一個的文件來測試PHP_Token_Stream。這看起來像預期的那樣起作用,並且不會複製出現在測試套件上下文中的錯誤。

關於如何輸出我的三葉草覆蓋率報告的任何建議?

+0

您在覆蓋率報告中包含多少個文件?有許多關於內存管理的php-token-stream在包含很多文件時存在一個已知問題:https://github.com/sebastianbergmann/php-token-stream/issues/60 – Motin 2016-06-06 14:24:36

回答

2

我們使用1GB運行大部分項目的單元測試,但是我們不得不啓用2GB以允許代碼覆蓋。嘗試增加memory limit for PHP使用

ini_set('memory_limit', '1024M'); 
+0

謝謝..正是需要的。 – jonmc12 2011-03-15 16:54:22

+0

@ jonmc12 - 請點擊勾號以接受正確答案。 :) – 2011-03-15 19:42:59