PHPUnit

PHPUnit to framework, który służy do testów jednostkowych dla języka PHP. Użytkownicy/ programiści, którzy tworzą aplikację, jednocześnie przygotowują zbiór testów jednostkowych mających na calu sprawdzenie poszczególnych komponentów aplikacji pod względem działania ich zgodnie z założonymi oczekiwaniami.

Framework ten wykonuje wszystkie testy jeden po drugim po czym wyniki tych testów, przedstawia w postaci raportów o ilości zdanych testów. Oprócz tego informuje o wszelkich niepowodzeniach czy błędach wykonania. Działanie PHPUnit umożliwia dosyć szybkie sprawdzenie całej aplikacji lub też jej części. Wpływa to na ułatwienie rozwoju danej aplikacji czy też na zarządzanie nią. Bieżące testowanie tworzonej aplikacji pozwala na uniknięcie błędów podczas wprowadzania kolejnych zmian, które mogłyby być znacznie trudniejsze do zlokalizowania.

PHPUnit między innymi oferuje takie możliwości jak:

  • możliwości testowania wyjątków
  • generator raportów pokrycia kodu (produkowane są przypadki testowe, które testują wewnętrzną strukturę oprogramowania a także ujawniają możliwe błędy w samym kodzie źródłowym)
  • wsparcie dla atrap obiektów (ang. mock object, jest to symulowany obiekt, który w kontrolowany sposób naśladuje zachowanie rzeczywistego obiektu, tworzone są w celu przetestowania zachowania innego obiektu)
  • współpraca z narzędziem Selenium RC, służąca do testowania interfejsów użytkownika (pozwala na przeprowadzanie automatycznych testów interfejsu użytkownika w dowolnym języki programowania przy użyciu dowolnej przeglądarki)
  • dostawcy danych (ang. data providers, są to generatory zestawów danych dla testów, które pozwalają na sprawdzenie tego jak pojedynczy test zachowuje się dla różnych danych wejściowych)
  • interfejs linii komend do wykonywania testów
  • generator raportów
  • wsparcie dla testowania kody korzystającego z baz danych
  • narzędzia do tworzenia testów jednostkowych oraz organizowania ich w hierarchiczne zestawy.

Framework ten używa do testów tzw. aseracji, które kontrolują w jaki sposób zachowuje się kod poddany testom. Aseracja (ang. assertion) jest to predykat czyli forma zdaniowa w danym języku, zwracająca prawdę lub fałsz, umieszczony w określonym miejscu w kodzie. Aseracja mówi nam o tym, że programista założył, że predykat w danym miejscu jest prawdziwy. Najprościej mówiąc jest to sprawdzenie czy to co otrzymał dany fragment kodu jest dokładnie tym czego się programista spodziewał.

Najpopularniejszymi aseracjami dostępnymi w PHPUnit są:

  • assertTrue
  • assertEquals
  • assertContains
  • assertInternalType
  • assertInstanceOf
  • expectedException.

Przykładowy kod w PHPUnit

PHPUnit Przykład #1

  <?php
  use PHPUnit\Framework\TestCase;
  
  class StackTest extends TestCase
  {
      public function testPushAndPop()
      {
          $stack = [];
          $this->assertEquals(0, count($stack));
  
          array_push($stack, 'foo');
          $this->assertEquals('foo', $stack[count($stack)-1]);
          $this->assertEquals(1, count($stack));
  
          $this->assertEquals('foo', array_pop($stack));
          $this->assertEquals(0, count($stack));
      }
  }
  ?>
  
PHPUnit Przykład #2

  <?php
  use PHPUnit\Framework\TestCase;
  
  class ExceptionTest extends TestCase
  {
      public function testException()
      {
          $this->expectException(InvalidArgumentException::class);
      }
  }
  ?>