Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> phpunit lapanie wyjatkow
nospor
post 5.09.2017, 10:28:05
Post #1





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




Hejka, uzywam PHPUNit 6.3.0 i probuje lapac wyjatki jednak nie dziala

  1. use DataService\Exception\FileIOException;
  2.  
  3. ....
  4.  
  5. /**
  6.   * @expectedException FileIOException
  7.   */
  8. public function testLoadWithWrongFilePath(): void
  9. {
  10. throw new FileIOException('Aa');
  11. }
  12.  

Przy czyms takim dostaje blad
ReflectionException: Class FileIOException does not exist

oczywiscie klasa ta instnieje, namespace i wszystko jest ok. Gdy odpalam normalne obiekty (nie wyjatki) z tyych samych namespace wszystko dziala.

Zas gdy odpalam jakas metode, ktora rzuca tym wyjatkiem, to nie ma bledu, ze klasa wyjatku nie istnieje, jednak skolei w ogole nie lapie tego wyjatku i zglasza blad, ze rzucilo wyjatkiem ktorego nie zlapalo.
  1. use DataService\Exception\FileIOException;
  2. use DataService\FileIO\QuestionsFileIO;
  3.  
  4. ....
  5.  
  6. /**
  7.   * @expectedException FileIOException
  8.   */
  9. public function testLoadWithWrongFilePath(): void
  10. {
  11. $questionsIO = new QuestionsFileIO();
  12. $questionsIO->load('/wrong/path.scv'); // ta metoda rzuca wyjatkiem FileIOException
  13. }



Bawilem sie w jakies xdebug.show_exception_trace bo tylko to znalazlem w necie ale nie tez nic to nie poprawia.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
markuz
post 5.09.2017, 10:34:39
Post #2





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


Pokaż namespace testu i wyjątku (i use).

Ten post edytował markuz 5.09.2017, 10:35:45


--------------------
Go to the top of the page
+Quote Post
nospor
post 5.09.2017, 10:43:58
Post #3





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




test:
  1. namespace Tests\Functional\DataService\FileIO;
  2.  
  3. use DataService\Exception\FileIOException;
  4. use DataService\FileIO\QuestionsFileIO;
  5. use PHPUnit\Framework\TestCase;


wyjatek
  1. namespace DataService\Exception;
  2.  
  3. use Exception;
  4.  
  5. class FileIOException extends Exception
  6. {
  7. }






Gdy zamiast komentarza @expectedException dam
$this->expectException(FileIOException::class);
to dziala dla pierwszej sytuacji, czyli gdy recznie odpalam wyjatek w tescie.
Nadal jednak nie dziala dla sytuacji, gdy to wywolywana metoda w tescie rzuca tym wyjatkiem

edit: dobra, wszystko dziala. W kodzie rzucajacym wyjatkiem mialem
  1. if (($handle = fopen($filePath, 'rb')) === false) {
  2. throw new FileIOException("Can not open '$filePath' file");
  3. }

I zanim rzucilo wyjatkiem to wpierw rzucalo bledem od fopen.... Dodalem @ i dziala smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
pyro
post 5.09.2017, 22:19:00
Post #4





Grupa: Zarejestrowani
Postów: 2 148
Pomógł: 230
Dołączył: 26.03.2008

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


A jak wygląda Twój phpunit.xml(.dist) ?


--------------------
ET LINGUA EIUS LOQUETUR IUDICIUM
Go to the top of the page
+Quote Post
nospor
post 6.09.2017, 08:29:47
Post #5





Grupa: Moderatorzy
Postów: 36 455
Pomógł: 6292
Dołączył: 27.12.2004




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

<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.8/phpunit.xsd"
         backupGlobals="false"
         colors="true"
         bootstrap="vendor/autoload.php"
>
    <php>
        <ini name="error_reporting" value="-1" />
        <server name="KERNEL_DIR" value="./" />
    </php>

    <testsuites>
        <testsuite name="functional">
            <directory>tests/Functional</directory>
        </testsuite>
        <testsuite name="unit">
            <directory>tests/Unit</directory>
        </testsuite>
    </testsuites>

    <filter>
        <whitelist>
            <directory>src</directory>
        </whitelist>
    </filter>

    <logging>
        <log type="coverage-html" target="/var/www/html/phpunit_data-service/report" lowUpperBound="35" highLowerBound="70"/>
        <log type="junit" target="/var/www/html/phpunit_data-service/logfile.xml" logIncompleteSkipped="false"/>
        <log type="coverage-clover" target="/var/www/html/phpunit_data-service/coverage.xml"/>
    </logging>
</phpunit>


Czyzbys zmierzal do tego:
<ini name="error_reporting" value="-1" />
?
Jesli tak to ja chce by mi sie wyswietlaly generalnie wszystkie bledy php


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 25.04.2024 - 00:07