2013-04-17 14 views
17

PHPUnit kullanarak testi yoksaymak için PHP test yönteminin yanında bulunması gereken özellik nedir?İçeriğini değiştirmeden phpunit'teki bir test yöntemini nasıl göz ardı edebilirim?

ben NUnit için nitelik olduğunu biliyoruz:

<?php 
require_once 'PHPUnit/Framework.php'; 

class SampleTest extends PHPUnit_Framework_TestCase 
{ 
    public function testSomething() 
    { 
     // Optional: Test anything here, if you want. 
     $this->assertTrue(TRUE, 'This should already work.'); 

     // Stop here and mark this test as incomplete. 
     $this->markTestIncomplete(
      'This test has not been implemented yet.' 
     ); 
    } 
} 
?> 

cevap

7

Sen PHPUnit bir test görmezden yöntemi markTestIncomplete() kullanabilirsiniz test yönteminin ve "test" ile başlayan isimlerden kaçının. Bu şekilde, PHPUnit'i @test kullanarak çalıştırmaya çağırmazsanız, bu testi yürütmez.

Ayrıca, PHPUnit to skip a specific test söyleyebilirdi:

<?php 
class ClassTest extends PHPUnit_Framework_TestCase 
{  
    public function testThatWontBeExecuted() 
    { 
     $this->markTestSkipped('PHPUnit will skip this test method'); 
    } 
    public function testThatWillBeExecuted() 
    { 
     // Test something 
    } 
} 
+0

cevabın için teşekkür ederim ama, testin içeriğini değiştirmek istemiyorum: Referans olarak

, bkz. Bazen bazı testleri görmezden gelmek ve test akışına tekrar eklemek istiyorum. –

12

kolay yolu sadece adını değiştirmek olacaktır:

[Test] 
[Ignore] 
public void IgnoredTest() 
21

Bir group annotation Testi etiketlemek ve koşmak gelenler testleri hariç tutabilir.

/** 
* @group ignore 
*/ 
public void ignoredTest() { 
    ... 
} 

Sonra böyle tüm testleri ancak göz ardı testleri çalıştırabilirsiniz:

phpunit --exclude-group ignore 
1

sonra yöntem PHPUnit tarafından yürütülmez başında test ile yöntemini değil isim ise (bakınız here).

public function willBeIgnored() { 
    ... 
} 

public function testWillBeExecuted() { 
    ... 
} 

bir yöntem yine de çalıştırmak için ek açıklama @test ekleyebilir test ile başlamaz hangi yürütülecek istiyorum. Eğer eklemek veya ek açıklamaları ayarlamak için istekli olup olmadığını, bir testin içeriğini değiştirmek istemiyorum yorumlarınızı birinde söylediği bu yana

/** 
* @test 
*/ 
public function willBeExecuted() { 
    ... 
} 
1

, sen testleri görmezden @requires ek açıklama kötüye olabilir:

Bu yalnızca PHP 9000 yılına kadar çalışacak
<?php 

use PHPUnit\Framework\TestCase; 

class FooTest extends TestCase 
{ 
    /** 
    * @requires PHP 9000 
    */ 
    public function testThatShouldBeSkipped() 
    { 
     $this->assertFalse(true); 
    } 
} 

Not salınır ve testler çıktısı da biraz yanıltıcı olacaktır:

There was 1 skipped test: 

1) FooTest::testThatShouldBeSkipped 
PHP >= 9000 is required. 
+0

+1000 kesinlikle kabul edilen cevap olmalıdır :) – cvng

İlgili konular