2011-08-12 11 views
7

benim phpunit.xml dosyasında bu var:PHPUnit neden testsuit ismiyle bir dosya bulmaya çalışıyor?

<phpunit ...> 
    <testsuites> 
     <testsuite name="MyTests"> 
      <directory>../path/to/some/tests</directory> 
     </testsuite> 
    </testsuites> 
    ... // more settings for <filter> and <logging> 
</phpunit> 

Ve bunu çalıştırmak için gittiğinizde, bu hatayı alıyorum:

PHP fatal error: Uncaught exception 'PHPUnit_Framework_Exception' 
with message 'Neither "MyTests.php" nor "MyTests.php" could be opened.' 

Neden PHPUnit bana bu hatayı veriyor ve neden olduğu Testlere bakmak için bir dizin verdiysem "MyTests.php" yi mi arıyor?

Ve ilgili bir notta, diğer testlerle daha fazla <testsuite> giriş eklediğimde, PHPUnit hatasız olarak çalışır. Ne var ne yok?

cevap

5

Varsayılan olarak PHPUnit "*Test.php dosyalarında bulunan tüm *Test sınıfları" (PHPUnit docs bakınız) ekleyecektir. Bu açıklamayla eşleşen herhangi bir dosya bulamazsa (ör. SomeTest sınıfını tanımlayan bir SomeTest.php dosyası), test paketinin name niteliğine göre bir dosya aramaya geri döner.

<?php 
// in ../path/to/some/tests/SomeTest.php: 
class SomeTest extends PHPUnit_Framework_TestCase { 
    public function test() { 
     //... test cases here 
    } 
} 
?> 

Artık hatasız phpunit çalıştırmak mümkün olmalıdır:

çözüm PHPUnit testsuite adıyla arama varsayılan değere geri düşmez, böylece bu tanıma uyan bir dosya oluşturmaktır:

$ phpunit 
PHPUnit 3.5.14 by Sebastian Bergmann. 

. 

Time: 0 seconds, Memory: 10.75Mb 

OK (1 test, 0 assertions) 

PHPUnit bu diğer suit altında çalışacak şekilde uyan test durumları bulmak mümkün olup olmadığını daha testsuite girişleri eklemek zaman hatasız çalışacaktır. Herhangi bir testsuitte çalışacak testler bulursa, hiçbir şey bulamadığı suitler için name özniteliği aramaya başvurmaz.

1

Sorunun, hangi dosyaları çalıştırmak istediğiniz test senaryolarını ve/veya paketlerini içerdiğini söylememeniz gerektiğine inanıyorum. suffix="Test.php" özniteliğini eklemeyi deneyin.

<testsuite name="MyTests"> 
    <directory suffix="Test.php">../path/to/some/tests</directory> 
</testsuite> 
+0

Varsayılan sonek "Test.php" gibi görünüyor; 'name' özniteliğinde verilen isimle bir dosya aramaya başlayan sonekle eşleşen hiçbir dosya olmadığı zaman. İlginç. – chesles

+1

LOL, Çalışmam için bazı testler yaptığınızı ve dosyamla karşılaştırıldığında neyin farklı olabileceğini düşündüğünüzü varsaydım. :) Şimdiye kadarki son eki atlayabileceğimi bilmek güzel. –