Enhetstesta modul som har ett externt beroende

  • Författare
  • Meddelande
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10972
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Enhetstesta modul som har ett externt beroende

Inlägg08 dec 2014, 15:17

Här är en artikel om "Använd PHPUnit och Travis för att enhetstesta modul som har externt beroende". Den visar hur du kan enhetstesta din modul - även om din modul har ett externt beroende till en annan modul.

http://dbwebb.se/kunskap/anvand-phpunit ... t-beroende

Fråga eller kommentera artikeln i denna tråden.
...
..:
.... /mos

sofiafahle

sql-kodare

  • Inlägg: 59
  • Blev medlem: 28 aug 2015, 18:25

Re: Enhetstesta modul som har ett externt beroende

Inlägg13 mar 2016, 09:45

Hej!

Lite osäker om jag har stött på ett problem med phpunit. Kör cygwin på Windows 10 och fick därför köra phpunit.bat då standardvarianten inte funkar.

Mitt resultat av ett test på mumin ser annorlunda ut än mos resultat efter att problemet med composers autoloader lösts:

Kod: Markera allt
$ phpunit.bat --bootstrap=test/config.php --coverage-html coverage test
PHPUnit 3.7.21 by Sebastian Bergmann.

The Xdebug extension is not loaded. No code coverage will be generated.


.

Time: 0 seconds, Memory: 2.00Mb

OK (1 test, 1 assertion)


Code coverage inte tillgängligt?
Dessutom vet jag inte om jag kan få phpunit.bat att läsa config-filen vi skapade, phpunit.xml.dist, då den inte meddelar var den läser config ifrån som i mos fall.
Beror det på att min phpunit.bat är en annan version?
Användarvisningsbild

thulin

troubleshooter

  • Inlägg: 499
  • Blev medlem: 30 dec 2015, 15:33
  • Ort: Skurup

Re: Enhetstesta modul som har ett externt beroende

Inlägg13 mar 2016, 18:03

Code Coverage verkar ju inte vara tillgängligt för att Xdebug-modulen inte är inläst. Testat att slå på den i php.ini?
/Thulin
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10972
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Enhetstesta modul som har ett externt beroende

Inlägg14 mar 2016, 17:59

Jag ser att jag bör uppdatera installationsprocessen på Windows, jag rundade ett hörn första gången jag skrev den.

Testar lite först på Windows 10.

A) Lägg till katalogen där php.exe ligger i PATH.

På min dator har jag xampp installerat och de exekverbara PHP-filerna ligger i:
Kod: Markera allt
C:\xampp\php


Jag öppnar kontrollpanelen:
Control Panel\System and Security\System

Klickar på Advanced system settings -> Environment Variables...
Klickar på User variables -> Path och knappen "Edit..."
Lägger till sökvägen till C:\xampp\php

Startar om terminalen (cygwin/command prompt/conemu) för att PATH skall bli aktiv med senaste ändringen.


B) Dubbelkolla att PHP ligger i pathen.

I command prompt (windows egen terminal).
Kod: Markera allt
mikae@DESKTOP-C3SVUSV C:\Users\mikae
> which php
C:\xampp\php\php.EXE

mikae@DESKTOP-C3SVUSV C:\Users\mikae
> php --version
PHP 5.6.12 (cli) (built: Aug  6 2015 12:06:20)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies


I cygwin.
Kod: Markera allt
mikae@DESKTOP-C3SVUSV /cygdrive/c/Users/mikae
$ which php
/cygdrive/c/xampp/php/php

mikae@DESKTOP-C3SVUSV /cygdrive/c/Users/mikae
$ php --version
PHP 5.6.12 (cli) (built: Aug  6 2015 12:06:20)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies


Bra, nu är sökvägen till PHP på plats.

C) Installera composer i pathen som ett litet sidosteg...

Går till Cygwn och hämtar hem composer.phar enligt stegen i
https://getcomposer.org/download/

Flyttar composer till xampp-katalogen som numer ligger i min path.

Hämtar hem två script som hjälper mig att köra composer direkt vid prompten (källa: http://stackoverflow.com/a/31625135/341137).

Stegen till installation utförs i Cygwin.
Kod: Markera allt
mikae@DESKTOP-C3SVUSV ~
$ which php
/cygdrive/c/xampp/php/php

mikae@DESKTOP-C3SVUSV ~
$ cd /cygdrive/c/xampp/php

mikae@DESKTOP-C3SVUSV /cygdrive/c/xampp/php
$ wget https://gist.githubusercontent.com/mosbth/ae5437cfe01d14b9707c/raw/50294b4510d068a01dca7e57e904cda964690142/composer
...utskrifter...
2016-03-14 16:09:51 (4.34 MB/s) - ‘composer’ saved [662/662]

mikae@DESKTOP-C3SVUSV /cygdrive/c/xampp/php
$ wget https://gist.githubusercontent.com/mosbth/bba3e71b5f86394a0d44/raw/e1c0ad30035dba89cc27f6cdcbf35da0c7df9406/composer.bat
...utskrifter...
2016-03-14 16:09:58 (41.3 MB/s) - ‘composer.bat’ saved [38/38]

mikae@DESKTOP-C3SVUSV /cygdrive/c/xampp/php
$ ls -l composer*
-rwxrwxr--+ 1 mikae mikae     662 Mar 14 16:09 composer
-rwxrwxr--+ 1 mikae mikae      38 Mar 14 16:09 composer.bat
-rwxr-xr-x+ 1 mikae mikae 1580509 Mar 14 15:43 composer.phar


Skripten som jag hämtar hem är composer.bat och composer (ett sh-script).

D) Dubbelkolla att composer fungerar.

I Windows command prompt (använder sig av composer.bat).
Kod: Markera allt
mikae@DESKTOP-C3SVUSV C:\Users\mikae
> which composer
C:\xampp\php\composer

mikae@DESKTOP-C3SVUSV C:\Users\mikae
> composer --version
Composer version 1.0-dev (24f04f7dbfb7321fda1a973cf9af41684322cf01) 2016-03-14 11:34:00


I Cygwin (använder sig av composer sh-varianten).
Kod: Markera allt
mikae@DESKTOP-C3SVUSV ~
$ which composer
/cygdrive/c/xampp/php/composer

mikae@DESKTOP-C3SVUSV ~
$ composer --version
Composer version 1.0-dev (24f04f7dbfb7321fda1a973cf9af41684322cf01) 2016-03-14 11:34:00



E) Då kan jag installera phpunit.

Nu gör vi det lite snabbare (enligt https://phpunit.de/manual/current/en/installation.html).

Ah, xampp innehåller redan en äldre version av phpunit. Den flyttar jag till en katalog så den inte bråkar med mig.
Kod: Markera allt
mikae@DESKTOP-C3SVUSV /cygdrive/c/xampp/php
$ pwd
/cygdrive/c/xampp/php

mikae@DESKTOP-C3SVUSV /cygdrive/c/xampp/php
$ mkdir phpunit_old

mikae@DESKTOP-C3SVUSV /cygdrive/c/xampp/php
$ mv phpunit* phpunit_old/


Då hämtar jag hem phpunit.phar.
Kod: Markera allt
mikae@DESKTOP-C3SVUSV /cygdrive/c/xampp/php
$ wget https://phar.phpunit.de/phpunit.phar
...utskrifter...
2016-03-14 16:41:02 (1.59 MB/s) - ‘phpunit.phar’ saved [2814864/2814864]


Nu använder jag samma bat & sh-filer som jag använde för composer, för att köra phpunit. Jag kopierar dem istället för att ladda ned dem på nytt.
Kod: Markera allt
mikae@DESKTOP-C3SVUSV /cygdrive/c/xampp/php
$ cp composer phpunit

mikae@DESKTOP-C3SVUSV /cygdrive/c/xampp/php
$ cp composer.bat phpunit.bat

mikae@DESKTOP-C3SVUSV /cygdrive/c/xampp/php
$ ls -l phpunit*
-rwxrwxr--+ 1 mikae mikae     662 Mar 14 16:42 phpunit
-rwxrwxr--+ 1 mikae mikae      38 Mar 14 16:43 phpunit.bat
-rwxrwxr--+ 1 mikae mikae 2814864 Mar 14 07:25 phpunit.phar

phpunit_old:
total 8
-rwxrwx---+ 1 Administrators mikae 2102 Oct 12 11:03 phpunit
-rwxrwx---+ 1 Administrators mikae 1958 Oct 12 11:03 phpunit.bat


Stabilt.

De båda skripten exekverar alltså motsvarande phar, som ligger i samma katalog och heter samma sak som skriptet självt. Klart användbart. På samma sätt kan man få alla andra phar körbara i Windows-miljö.

F) Funkar det nu i terminalen?

Testar i Windows Command Prompt.
Kod: Markera allt
mikae@DESKTOP-C3SVUSV C:\Users\mikae
> which phpunit
C:\xampp\php\phpunit

mikae@DESKTOP-C3SVUSV C:\Users\mikae
> phpunit --version
PHPUnit 5.2.11 by Sebastian Bergmann and contributors.


Testar i Cygwin.
Kod: Markera allt
mikae@DESKTOP-C3SVUSV ~
$ which phpunit
/cygdrive/c/xampp/php/phpunit

mikae@DESKTOP-C3SVUSV ~
$ phpunit --version
PHPUnit 5.2.11 by Sebastian Bergmann and contributors.


YEY!

Nu har jag php, composer och phpunit installerade i PATH och kan köra dem direkt från både Windows egen command prompt och från Cygwin. Så nöjd!
...
..:
.... /mos

sofiafahle

sql-kodare

  • Inlägg: 59
  • Blev medlem: 28 aug 2015, 18:25

Re: Enhetstesta modul som har ett externt beroende

Inlägg14 mar 2016, 18:27

Att ändra inställningar i php.ini fungerade bra. Bör jag ändå installera om composer/phpunit?
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10972
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Enhetstesta modul som har ett externt beroende

Inlägg14 mar 2016, 18:29

thulin skrev:Code Coverage verkar ju inte vara tillgängligt för att Xdebug-modulen inte är inläst. Testat att slå på den i php.ini?


Här gör jag som thulin föreslår:
viewtopic.php?f=55&t=5218
...
..:
.... /mos
Användarvisningsbild

mos

dbwebb

  • Inlägg: 10972
  • Blev medlem: 10 nov 2011, 09:52
  • Ort: Ronneby / Bankeryd

Re: Enhetstesta modul som har ett externt beroende

Inlägg14 mar 2016, 18:45

sofiafahle skrev:Att ändra inställningar i php.ini fungerade bra. Bör jag ändå installera om composer/phpunit?


Om det funkar för dig så kör på.

Om du får lite tid över, eller nästa gång du behöver installera en phar, kan du köra enligt ovan.

Men har du ett sätt som funkar så kör du bara på.
...
..:
.... /mos

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 18 gäster