2010-09-08 16 views
53

Yürütülecek belirli bir test kitini nasıl seçebilirim?Belirli bir phpunit xml testsuite nasıl çalıştırılır?

$ PHPUnit --configuration Config.xml

Config.xml:

PHPUnit kullanıcılı posta içinde bu mesajlardan kanıtladığı gibi bu PHPUnit güncel sürümlerinde mümkün değildir
<testsuites> 
    <testsuite name="Library"> 
     <directory>library</directory> 
    </testsuite> 
    <testsuite name="XXX_Form"> 
     <file>library/XXX/FormTest.php</file> 
     <directory>library/XXX/Form</directory> 
    </testsuite> 
</testsuites> 
+0

X-Ref: [PHPUnit'te varsayılan olarak tek bir testsuite çalıştırılıyor] (https://stackoverflow.com/q/37820193/367456) – hakre

cevap

76

olarak test suit bir grup çalıştırmak isterseniz PHPUnit 3.7.13

$ phpunit --configuration config.xml --testsuite Library 
$ phpunit --configuration config.xml --testsuite XXX_Form 

sonra Sonra

$ phpunit --configuration config.xml --testsuite Both 
bu

<testsuites> 
    <testsuite name="Library"> 
    <directory>library</directory> 
    </testsuite> 
    <testsuite name="XXX_Form"> 
    <file>library/XXX/FormTest.php</file> 
    <directory>library/XXX/Form</directory> 
    </testsuite> 
    <testsuite name="Both"> 
    <directory>library</directory> 
    <file>library/XXX/FormTest.php</file> 
    <directory>library/XXX/Form</directory> 
    </testsuite> 
</testsuites> 

yapabileceğini

PHPUnit şu anda bu gibi yuvalanmış testisitleri desteklemiyor

<testsuites> 
    <testsuite name="Both"> 
     <testsuite name="Library"> 
     <directory>library</directory> 
     </testsuite> 
     <testsuite name="XXX_Form"> 
     <file>library/XXX/FormTest.php</file> 
     <directory>library/XXX/Form</directory> 
     </testsuite> 
    </testsuite> 
</testsuites> 

Bu nedenle, test grupları gruplarını çalıştırmak istediğinizde xml yapılandırması çoğaltmanız gerekir!

+0

'un basitçe göz ardı edilmesi sorunum var. Test yapılmadı. ile belirtirsem düzgün çalışırlar, ancak hepsini el ile belirtemiyorum! Test.php dosyasını ve sınıf adı kuralını izlerler. Fikir? –

+0

Yapılandırma dosyanızı paylaşabilir misiniz? Küçük ayrıntılar genellikle şüpheli. –

+0

http://stackoverflow.com/questions/15249469/phpunit-does-not-find-any-tests-with-director-xml-tag-but-does-with-some-file –

17

liste: http://thread.gmane.org/gmane.comp.php.phpunit.user/1302

Ancak bir alternatif var, basitçe bir yolu phpunit geçirebilirsiniz.

phpunit library/XXX 

bu sizin için yeterli değilse Bu kütüphane/XXX dizinine

tüm testleri aday olacağını, başka bir seçenek daha sonra seçici olarak çalıştırmak mümkündür farklı kategorilerde testleri bölmek için @group annotation kullanmaktır.

+0

iyi, postalarımda gördüğünüz gibi, tam olarak ihtiyacım olan şey bu değil –

+0

O zaman cevabımın ilk bağlantısında işaret edildiği gibi yapabileceğiniz hiçbir şey yoktur. –

2

Başka bir seçenek, ayrı olarak test etmek istediğiniz her test takımı için ayrı bir yapılandırma dosyası oluşturmaktır. Yinelenen ayarları kopyalamak/yapıştırmak zorunda kalabileceğiniz bazı ek yükler vardır, ancak her bir yapılandırma dosyasını gerektiği gibi belirtebilirsiniz.

1

Diğer cevaplar doğrudur. Bunu bir xml config kullanarak yapamazsınız, ancak yapabileceğiniz şey php'de aynı türde bir yapılandırma yapar.

Kesinlikle en güzel şey değil, ama ihtiyacınız olan işlevselliği size vermesi gerekiyor. ,

library 
    XXX  
    FormTest.php 
    Unit 
    unittest1.php 
    unittest2.php 

Ve dosyaların her biri mükemmel adlandırma kuralı ile 1 testini içerdiğini:

Sen, senin dizin "kütüphane" 3 dosyalarını içeren diyelim xml yapılandırma

<testsuites> 
    <testsuite name="Library"> 
    <directory>library</directory> 
    </testsuite> 
    <testsuite name="XXX_Form"> 
    <file>library/XXX/FormTest.php</file> 
    <directory>library/XXX/Form</directory> 
    </testsuite> 
</testsuites> 

Varsayımsal sağlanan Örneğin: FormTest, testForm()

İçindekiler için her şeyi içeren bir yapılandırma oluştururuz:

Phpunit adlandırma kuralları tarafından bir sınıf oluşturacağız. Sen

class LibraryConfigTest extends PHPUnit_Framework_TestCase { 

Her "test paketi" sadece istediğiniz testler çalışan bir yöntem olacaktır ... aslında kullanmak asla olarak ne istersen onu adlandırabilirsiniz. Metotları istediğiniz gibi adlandırın, bir kez daha asla kullanmayacağız. Phpunit koşuya dikkat edecek. Onları nasıl gruplandıracağınızı bildiğinizden, bunları gruplar halinde yorumladığınızdan emin olun.

/** 
* All Tests in Library 
* @group Library 
**/ 
    public function testLibrary() { 
     UnitTest1::testUnit1(); 
     UnitTest2::testUnit2(); 
     FormTest::testForm(); 
    } 

/** 
* All Form tests in library/XXX 
* @group XXX_Form 
**/ 
    public function testForm() { 
     FormTest::testForm(); 
    } 
} 
?> 

Şimdi, işlevsellik elde etmek için istediğiniz grupla ilgili "config" komutunu çalıştırmanız yeterlidir.

phpunit --group XXX_Form library_config.php 
phpunit --group Library library_config.php 

Dediğim gibi o sürekli bakım gerektirir ama size aradığınız işlevselliği verecek şekilde, bu iyi değil kod kesinlikle çirkin ve olduğunu.

Umarız Bergmann bu işlevi bir sonraki turda ekleyecektir, ancak görüntü kalitesi ignoring it olabilir. İşte kod

2

phpunit 6.1'den itibaren xml config dosyasında defaultTestSuite özniteliğini kullanabilirsiniz, bu varsayılan bir seçenek phpunit --testsuite xxx kullanmak gibidir ve geçersiz kılınır.

İlgili konular