2013-04-17 5 views

Odpowiedz

7

Można użyć metody markTestIncomplete() ignorować test w PHPUnit:

<?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.' 
     ); 
    } 
} 
?> 
+0

Dziękuję za odpowiedź, ale nie chcę, aby zmodyfikować treść testu. Chodzi o to, że czasami chcę zignorować niektóre testy, a następnie ponownie dodać je do przepływu testów. –

12

Najprostszym sposobem byłoby po prostu zmienić nazwę metody testowej i unikać nazw zaczynających się od "testu". W ten sposób, chyba że powiesz PHPUnit, aby wykonał go przy użyciu @test, nie wykona tego testu.

Ponadto, można powiedzieć PHPUnit to skip a specific test:

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

można oznaczyć test z group annotation i wykluczyć te testy z biegu.

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

Następnie można uruchomić wszystkie testy, ale ignorowane testy tak:

phpunit --exclude-group ignore 
1

Jeśli nazwać metodę nie z test na początku wówczas metoda nie zostanie wykonany przez PHPUnit (patrz here).

public function willBeIgnored() { 
    ... 
} 

public function testWillBeExecuted() { 
    ... 
} 

Jeśli chcesz być wykonywane metodą, która nie zaczyna się test można dodać adnotację @test wykonać tak.

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

Ponieważ zasugerował w jednym z komentarzy, że nie chcą, aby zmienić treść testu, jeśli są chętni, aby dodać lub dostosować adnotacje, można nadużywać @requires adnotacji do ignorowania testy:

<?php 

use PHPUnit\Framework\TestCase; 

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

Uwaga To będzie działać tylko do PHP 9000 zostaje zwolniony, a wyjście z systemem testów będzie nieco mylący, zbyt:

There was 1 skipped test: 

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

Dla porównania, patrz:

+0

+1000 powinien definitywnie być zaakceptowaną odpowiedzią :) – cvng

Powiązane problemy