2010-10-01 12 views
19

taşıma Önemli hata, ama, senaryo ölür ve hiçbir doğru PHPUnit çıkışına sahiptir.PHPUnit: Bir <strong>önemli hata</strong> tetiklendiğinde ben birim testler için PHPUnit kullanmak

PHPUnit çıkışının doğru şekilde ayarlanmasını istiyorum, çünkü Eclipse eklentisi tarafından okunmaktadır. Aslında ölümcül hata PHPUnit durur ve Eclipse eklenti bir şey yorumlayamaz (çünkü PHPUnit betiği bir hata yerine, bir hata vardı).

Teşekkür

+0

Ne tür ölümcül hatalar? sözdizimi veya semantik ile alakalıysa, şansınız kalmaz. – stillstanding

cevap

26

'i kullanarak önemli hataları yakalayabilirsiniz. PHPUnit'in işlem yalıtım özelliklerini kullanmanız gerekir - her bir test paketini yeni bir işlemde başlatın.

phpunit --process-isolation ... 

Önemli hataların phpunit çıktınızı kesmediğinden emin olmanın tek yolu budur.

işletim süresi yeni PHP örneği başlatıldığında, tek tek her testte için çünkü önyükleme vb

şunları yapabilirsiniz Bu durumu değiştirmek için yürütülen Süreç izolasyon test çalışma süresini çarpar

, Tam test senaryolarını ayrı bir işlemde (@runTestsInSeparateProcesses) veya yalnızca ölümcül olduğu bilinen tekleri (@runInSeparateProcess) çalıştırmayı seçin.

+1

Uyanık olun, test yürütme işlemini önemli ölçüde artırır. Küçük bir uygulamada sadece 150 test ile burada 4 saniyeden 90 saniyeye indi. – stefgosselin

+0

Daha iyi test hızları elde etmek için "yedekleme globals" işlevini devre dışı bırakabilirsiniz. Ayrıca, bootstrap dosyanızın hızına da bağlıdır. – cweiske

+0

--process-tecrit 7000+ test çalıştırmayı denediğimde büyük beyin hasarına neden olabilir, ben --bootstrap 'içinde register_shutdown_function()' yi ve TeamCity entegrasyonu için bir yazım kullandım. Bu ay daha sonra kaynakları paylaşacağım. –

2

set_error_handler() orada yardımcı olmayacaktır. register_shutdown_function()

+0

Dediğim gibi, bir PHPUnit hatasına sahip olmak istiyorum (phpunit çıktısının berbat olmamasını istiyorum). Sorunun açıklamasını genişletdim. –