Obecnie używam Zend Framework w połączeniu z PHPUnit do przeprowadzania testów jednostkowych w aplikacji. Kiedy Hudson wykonuje polecenie powłoki PHPUnit, maksymalny limit pamięci PHP jest osiągany podczas generowania pokrycia kodu. Obecnie mam w sumie 41 testów z 334 twierdzeniami.Generowanie pokrycia kodu PHPUnit powodującego wyczerpanie pamięci
Udało mi się wyeliminować ten błąd, podnosząc ustawienie memory_limit do 768M przy użyciu przełącznika -d memory_limit=768M
; obawiam się jednak, że wraz ze wzrostem złożoności oraz całkowitą liczbą testów/stwierdzeń, nie będę miał wystarczającej ilości pamięci do wygenerowania kodu HTML dla statystyk zasięgu kodu.
OS: CentOS 5.5
Panel sterowania: WHM/cPanel
CI Server: Hudson
/usr/local/bin/phpunit
--verbose
-d memory_limit=512M
--log-junit ../../build/logs/phpunit.xml
--coverage-clover ../../build/logs/coverage/clover.xml
--coverage-html ../../build/logs/coverage-html/
Fatal error: Allowed memory size of 536870912 bytes exhausted
Przed podjęciem moje zmiany i pozwalając Hudson zajmiemy się resztą, ja korzystaj z Windows 7 do programowania. Wykorzystanie pamięci nigdy nie przekroczyło 340 MB podczas uruchamiania tego samego polecenia w W7.
Czy wszystkie twoje przypadki testowe należą do jednej klasy? – allnightgrocery
Nie, testy są podzielone na cztery różne pliki. Te testy są stosunkowo proste, szczególnie. w porównaniu z tym, co zaplanowaliśmy. –
:) dziękuję za opublikowanie rozwiązania. Mam problem, który wymieniłeś i naprawdę go hackowałeś. Za każdym razem, gdy coś się pojawi (pamięć wyczerpana w /pear/phpunit/framework/whatever.php na linii 1999), wpisuję 'sudo vi /.../ whatever.php' i dodaję wiersz' set_ini ("memory_limit "," 1000M ")'. Prawdopodobnie nie najlepsza praktyka;) –