Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Test Driven Development
NoiseMc
post
Post #1





Grupa: Zarejestrowani
Postów: 398
Pomógł: 10
Dołączył: 24.11.2004
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Chcialbym poznac Wasze zdanie dotyczące Unit Testów.
Osobiście zabieram się do tego od jakiegoś czasu i trudno mi jest to ugryźc. Znam API SimpleTest ale problem leży w tym, że nie wiem co i jak testowac, szczególnie klasy odpowiedzialne za zapis/odczyt danych ... co porównywac i z czym? Mock Objects ... kolejny temat zagadka.

Docelowo chciałbym dojśc do takiego poziomu aly każdy build aplikacji był zautomatyzowany z testami znaczy:
1. Export z SVN
2. Odpal testy
3. Jezeli wszytko ok to przekopiuj odpowiednie pliki do odpowiednich katalogow, poustawiaj prawa dostepu i zalinkuj katalog aplikacji do document_root serwera.

Piszcie co testujecie i jak ... przykladu kodu mile widziane smile.gif

Ten post edytował NoiseMc 1.12.2007, 20:37:06


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Sedziwoj
post
Post #2





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Tak czytam, w końcu trzeba się douczać, i nie mogę dojść jednej rzeczy.
Czy mając kod:
  1. <?php
  2. class JakiesOperacje {
  3.  protected $objCos;
  4.  public function __construct(){
  5. $this->objCos = new Cos();
  6.  }
  7.  public function zrobTo( $str ){
  8. return $this->objCos->wykonaj( $str );
  9.  }
  10. }
  11. ?>

Jest możliwość podmienienia klasy Cos? Czy muszę modyfikować konstruktor, aby móc go zastąpić spreparowanym obiektem?


--------------------
Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami.
Go to the top of the page
+Quote Post
splatch
post
Post #3





Grupa: Zarejestrowani
Postów: 487
Pomógł: 7
Dołączył: 7.01.2004
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(Sedziwoj @ 3.12.2007, 20:01:54 ) *
Tak czytam, w końcu trzeba się douczać, i nie mogę dojść jednej rzeczy.
Czy mając kod:
  1. <?php
  2. class JakiesOperacje {
  3.  protected $objCos;
  4.  public function __construct(){
  5. $this->objCos = new Cos();
  6.  }
  7.  public function zrobTo( $str ){
  8. return $this->objCos->wykonaj( $str );
  9.  }
  10. }
  11. ?>

Jest możliwość podmienienia klasy Cos? Czy muszę modyfikować konstruktor, aby móc go zastąpić spreparowanym obiektem?


W najprostszym wypadku można dopisać:
  1. <?php
  2. class ExtJakiesOperacje extends JakiesOperacje {
  3. public function __construct(Cos $myImpl){
  4. parent::__construct();
  5.  
  6. $this->objCos = $myImpl;
  7. }
  8. }
  9. ?>


Fakt, że jest to troszkę na okrętkę, ale sam w ten sposób kiedyś testowałem część kodu, do którego normalnie nie mogłem się dostać. Można próbować podmienić konstruktor via mocki, chociaż wówczas może pojawić się problem z inicjowaniem pola. W Simple Test mamy do dyspozycji partial mock objects.


--------------------
Łukasz Dywicki
Independent Java and open source software consultant.
Blog - Java, OSGi, integracja oprogramowania..
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 23:54