Bir dinamik olarak yüklenen uzantısı kitaplığı ile phpunit çalıştırmak mümkün mü?

1 Cevap php

Benim uzatma PHPUnit testlerin bir paketi var, ve ben uzantısı'nın Hudson inşa sürecinin bir parçası olarak bunları çalıştırmak istiyorum.

Yani zamanında yüklemek için eklenti kütüphanesini belirterek phpunit çalıştırmak istiyorum, ama ben bunu nasıl anlamaya olamaz.

Şöyle Benim dizin yapısı:

/myextension.c
/otherextensionfiles.*
/modules/myextension.so
/tests/unittests.php

Ben aşağıdaki gibi bir configuration XML dosya ile phpunit çalışıyor denedim:

<phpunit>
<php>
<ini name="extension_dir" value="../modules/"/>
<ini name="extension" value="myextension.so"/>
</php>
</phpunit>

Aşağıdaki gibi Ve sonra (tests dizininde) çalışan:

phpunit --configuration config.xml unittests.php

Ama sonra Fatal error: Call to undefined function myfunction() olsun, bu yüzden kütüphane yükleme değil.

Ben de denedim:

phpunit -d extension_dir=../modules/ -d extension=myextension.so unittests.php 

Ve ayrıca dl('myextension.so') test kurulumu, ama hiçbir sevinç.

Alakalı ise, bu PHP 5.2 ve phpunit 3.4.11 kullanıyor.

Ben çapraz gönderdiniz this question on the PHPUnit users mailing list.

1 Cevap

Ben ayarlamak mümkün değil şüpheli extension_dir at runtime in PHPUnit since it has the attribute PHP_INI_SYSTEM in this chart.

Yani ini_set() , so I assume it's also not possible to set it with the PHPUnit config <ini name="extension_dir" value="/mydir/"> ile bu mümkün değil demektir.

EDIT:

PHPUnit sadece başka bir PHP script Ancak, doğrudan PHP çalıştırmak ve geçersiz kılma komutları bu şekilde geçmek mümkün!

Bu yukarıdaki soruna alır ve aşağıdaki işler:

php -d extension_dir=../modules -d extension=myextension.so /usr/bin/phpunit unittests.php

Bu yaklaşım ile tek sorun (örneğin, /usr/lib/php5/20060613/), bu alakalı extension_dir sembolik link ekleyerek çözülebilir PHPUnit artık normal bir dizinde yüklü olan tüm uzantıları bulmak mümkün olacak olması Varsayılan extension_dir dosyaları.