Nawiązując do wpisu, który zamieściłem wcześniej o przekazywaniu zmieninnych pomiędzy testami, chciałem przedstawić krótką instrukcję dotyczącą wykonywania różnych funkcjonalności przed i po testach.

Metody setUp() i tearDown()

Metody te służą do wywołania odpowiednich funkcjonalności w sytuacji, gdy chcemy aby były one wywołane odpowiednio przed testami i po nich. Metoda setUp() może być więc wykorzystana do utworzenia instancji obiektu, na którym następnie zostanie przeprowadzony odpowiedni test. Natomiast metoda tearDown() wywoła się po zakończeniu testu, a więc, mówiąc kolokwialnie, możemy jej użyć do posprzątania.

Na co jednak należy zwrócić uwagę w przypadku tych dwóch metod. Otóż medoty te wywoływane są przed i po każdym z testów zawartych w klasie testowej. Dla poniższego kodu zostaną więc wywołane w sumie 3 razy.

class FooTest extends ControllerTestCase {

  public function setUp() {
    echo 'jestem setUp<br />';
  }

  public function tearDown() {
    echo 'jestem tearDown<br />';
  }

  public function testCanCheckFoo1() {
    echo 'jestem testCanCheckFoo1<br />';
  }

  public function testCanCheckFoo2() {
    echo 'jestem testCanCheckFoo2<br />';
  }

  public function testCanCheckFoo3() {
    echo 'jestem testCanCheckFoo3<br />';
  }
}

Efektem będzię więc wyświetlenie następującej sekwencji komunikatów:

jestem setUp
jestem testCanCheckFoo1
jestem tearDown
jestem setUp
jestem testCanCheckFoo2
jestem tearDown
jestem setUp
jestem testCanCheckFoo3
jestem tearDown

Metody setUpBeforeClass() i tearDownAfterClass()

Czasami jednak zdaża się, że potrzebujemy wywołać jakieś funkcjonalności przed wszystkimi testami, a na końcu po nich posprzątać. Tutaj właśnie przydatne nam będą wspomniane wyżej metody – setUpBeforeClass() i tearDownAfterClass(). Najprościej będzie to prześledzić na kodzie, którym wcześniej sprawdzaliśmy setUp() i tearDown().

class FooTest extends ControllerTestCase {

  public static function setUpBeforeClass() {
    echo 'jestem setUp<br />';
  }

  public static function tearDownAfterClass() {
    echo 'jestem tearDown<br />';
  }

  public function testCanCheckFoo1() {
    echo 'jestem testCanCheckFoo1<br />';
  }

  public function testCanCheckFoo2() {
    echo 'jestem testCanCheckFoo2<br />';
  }

  public function testCanCheckFoo3() {
    echo 'jestem testCanCheckFoo3<br />';
  }
}

W tym wypadku wynik działania powyższej klasy testującej wygląda tak:

jestem setUp
jestem testCanCheckFoo1
jestem testCanCheckFoo2
jestem testCanCheckFoo3
jestem tearDown

Jak widać są to kolejne przydatne elementy PHPUnit, które ułatwią nam pracę z testami jednostkowymi.

PHPUnit – metody wywoływane przed i po testach
Tagged on:                 

2 thoughts on “PHPUnit – metody wywoływane przed i po testach

  • 2012-02-03 at 15:06
    Permalink

    Prawie dziala
    Fatal error: Cannot make static method PHPUnit_Framework_TestCase::setUpBeforeClass() non static in class

    Reply
    • 2012-02-03 at 19:05
      Permalink

      Zgadza się – zapomniałem o static. Już jest zaktualizowany wpis.

      Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Social Widgets powered by AB-WebLog.com.