2013-04-07 20 views
6

Podążam za konwencją ZF2 przechowywania testów w modułach i wszystko działa poprawnie, gdy testy są uruchamiane z każdego modułu. Chciałbym mieć phpunit.xml na poziomie root'a, który wywołuje poszczególne testy modułów i konsoliduje je w celu uzyskania danych o pokryciu kodu i innych danych.Jak skonsolidować testy modułu ZF2/modułu aplikacji w jednym wywołaniu?

Problem polega na tym, że każdy indywidualny zestaw testów jest ładowany w modułowych plikach phpunit.xml. Jedynym sposobem, w jaki jestem świadomy robienia rzeczy, jest skonfigurowanie bootstrapu w każdym pliku phpunit.xml, który oczywiście nie zostanie pobrany podczas uruchamiania testów z katalogu głównego, ponieważ poszczególne pliki XML są ignorowane.

Moje pytanie brzmi: czy istnieje sposób na plik phpunit.xml na poziomie root'a do odczytu pojedynczych plików phpunit.xml i bootstrap z modułów, rodzaj dziedziczenia konfiguracji phpunit, jeśli to zrobisz? Mógłbym pójść drogą pisania tego w Phing lub w skrypcie CI, ale chciałbym, żeby było to szybkie i brudne podczas opracowywania, a to rozwiązanie nadal nie wygenerowałoby skonsolidowanego raportu kodu.

Zasadniczo chcę coś takiego, ale zamiast uruchomić testy, chcę, aby uruchomić poszczególne pliki phpunit.xml w każdym module. czy to możliwe?

<?xml version="1.0" encoding="UTF-8"?> 

<phpunit> 
    <testsuites> 
     <testsuite name="Site Tests"> 
      <directory>./module/Application/test/ApplicationTest</directory> 
      <directory>./module/User/test/UserTest</directory> 
     </testsuite> 
    </testsuites> 
</phpunit> 

Aktualizacja

Celem jest mieć metryki kodu wygenerowanego przez PHPUnit które dają przegląd projektu, a nie specyficzną modułową przegląd. Doceniam, że skrypty w odpowiedziach przeprowadzą testy jednostkowe w odniesieniu do poszczególnych modułów, ale nie jest to tym, czego szukam. Rozumiem, że może to być ograniczenie w odniesieniu do PHPUnit. Zajmę się tym w ciągu najbliższych kilku dni i spróbuję znaleźć rozwiązanie, ponieważ wydaje się, że jest to przydatne w wielu projektach dotyczących niestandardowych modułów.

Aktualizacja 2

Robert Podstawowe wymyślił skrypt, który tworzy strukturę katalogów z raportami modułu wewnątrz i działa świetnie, ale byłoby miło mieć to uruchomiony w ciągu PHPUnit z raportowania właściwe metryki.

https://gist.github.com/robertbasic/5329789

+0

zadałem podobne pytanie [] (http://stackoverflow.com/questions/14755655/phpunit-bootstrap-in-phpstorm) jakiś czas temu, ale bez większego powodzenia. Nie patrzyłem na to od tamtej pory, ale myślę, że zrobię to za pomocą Phinga. Jeśli twój IDE go nie obsługuje (na przykład PhpStorm), będzie to tak proste jak uruchomienie 'testu phinga 'lub podobnego z wiersza poleceń po wykonaniu celu' test'. To nie jest to, czego szukasz, ale jest to proste rozwiązanie, które prawdopodobnie wykorzystam sam. – Andy0708

+0

Jeśli chcesz użyć mrówki, możesz znaleźć inne rozwiązanie [tutaj] [1]. [1]: http://stackoverflow.com/questions/16628427/zend-framework-2-phpunit-multiple-modules-continuous-integration/24134625#24134625 –

Odpowiedz

1

Jeśli używasz systemu Linux, możesz utworzyć prosty skrypt. Nie dokładnie takie rozwiązanie chciałeś, ale może pomóc w żaden mniej:

#!/bin/sh 

modDir=$(pwd) 
for i in *; do 

    if [[ -d $i/test ]]; then 
     cd $i/test 
     phpunit 
     cd $modDir 
    fi 
done 

może po prostu spaść, że do pliku runtests.sh w katalogu modułu.

Tylko myśl :)

+0

Dziękuję za odpowiedź, ale to nie pomoże w takich kwestiach, jak pokrycie kodu, ponieważ wygeneruje oddzielne pliki dla każdego zestawu testów. –

1

Będąc wcześniej omawiane na IRC to z różnymi ludźmi jestem całkiem pewny, że nie można, trzeba napisać skrypt do pętli modułów i uruchomić je na module przez podstawę modułu.

+0

Dzięki za odpowiedź ale patrz komentarz powyżej dlaczego chcę generować zasięg kodu i dane dla całego projektu. –

+0

Rozumiem, co masz na myśli, ale nie sądzę, że to możliwe, mam ten sam problem w pracy, generujemy pokrycie kodu dla każdego modułu atm –

+0

Wygląda to na ograniczenie w PHPUnit. W najbliższych dniach przyjrzę się temu bliżej. Pozdrawiam za opinię. –

Powiązane problemy