Próbuję napisać testy jednostkowe dla aplikacji, w których wiele zmian kodu nie jest możliwe. Prawie wszystkie pliki .php w bazie kodu używa niektóre $ _SERVER [ '] zmienne jak
require_once $_SERVER['DOCUMENT_ROOT'] . '/mainApi.php';
Więc teraz, gdy mam napisać i uruchomić przypadków testowych phpunit mam jakoś ustawić te zmienne. Obecnie jestem ustalania tych zmiennych w środowisku użytkownika, a następnie robi
$_SERVER['DOCUMENT_ROOT'] = getenv('DOCUMENT_ROOT');
require_once $_SERVER['DOCUMENT_ROOT'] . '/mainApi.php';
Pierwsze zmienne serwera, jak to działa poprawnie. Testy przeprowadzam przez linię poleceń jako $ phpunit test.php
.
Ques1: Czy można ustawić zmienne $ _SERVER podczas uruchamiania testów phpunit za pomocą linii poleceń?
Muszę również przeprowadzić te testy jednostkowe za pośrednictwem Jenkinsa i nie mogę ustawić tych zmiennych serwera poprzez ANT/plik kompilacji.
Ques2: Czy to możliwe, aby ustawić te zmienne przez ant pliku kompilacji w Jenkins lub uruchamiając dowolny skrypt przed wykonaniem testów phpunit przez Jenkinsa?
Próbowałem eksportu zmiennej serwera za pomocą skryptu powłoki
export DOCUMENT_ROOT=/server/path-to-root-dir
i wywołanie tego skryptu w build.xml w Jenkins
<export name="setEnv" description="set server var">
<exec executable="sh">
<arg value = "sumit.sh" />
</exec>
</target>
ale jej nie działa. Czy jest jakieś ustawienie, które mogę dla tego zrobić? Dzięki!
możemy ustawić '$ _SERVER [ 'DOCUMENT_ROOT']' bezpośrednio przez plik build?Twoja metoda ' ' działa idealnie dobrze, ale mam tak wiele zmiennych SERVER w moim kodzie, że będę musiał napisać wszystkie '$ _SERVER [] = getenv()' w pliku php i będzie musiał zaimportować ten plik we wszystkich klasach testowych. Czy istnieje sposób, aby go zmniejszyć? –
Sumitk
@Sumitk - Możesz wykonać przypisania w 'bootstrap.php', które PHPUnit ładuje automatycznie przed uruchomieniem jakichkolwiek testów. Albo umieść plik w katalogu w katalogu głównym twoich testów lub wskaż na nim PHPUnit używając argumentu wiersza poleceń '--bootstrap'. –
Czy to 'bootstrap.php' to plik, który tworzymy wraz z plikami testowymi, czy też pochodzi z PHPUnit? Bo nie mogę tego zobaczyć w moim systemie. Również jeśli go tworzymy, gdzie powinienem go umieścić? ze wszystkimi plikami testowymi lub z 'phpunit.xml.dist '? – Sumitk