Why PHPUnit return -1, when all test run OK.
phpunit application/models2/Sima/UserTest.php
PHPUnit 3.7.29 by Sebastian Bergmann.
Configuration read from /home/bamboo/bamboo-home/xml-data/build-dir/SIMA-MAIN-JOB1/tests/phpunit.xml
.
Time: 866 ms, Memory: 19.25Mb
OK (1 test, 2 assertions)
Related
Unable to run tests for the specific file, cause PhpStorm adds namespace to the final command
Testing started at 14:36 ...
[sftp://inf#127.0.0.1:22]:/usr/bin/php /mnt/d/MP/mp.kz/phpunit.phar --bootstrap /mnt/d/MP/mp.kz/vendor/autoload.php --configuration /mnt/d/MP/mp.kz/phpunit.xml MP\\Tests\\Auction\\AuctionsListPublicSearchServiceTest /mnt/d/MP/mp.kz/tests/Auction/AuctionsListPublicSearchServiceTest.php --teamcity --cache-result-file=/mnt/d/MP/mp.kz/.phpunit.result.cache
PHPUnit 9.0.1 by Sebastian Bergmann and contributors.
Cannot open file "MP\\Tests\\Auction\\AuctionsListPublicSearchServiceTest".
Process finished with exit code 1
PhpStorm adds namespace to the command line.
If I remove namespace from command line then it works OK:
[SANDBOX]inf#NM0-MP:~$ /usr/bin/php /mnt/d/MP/mp.kz/phpunit.phar --bootstrap /mnt/d/MP/mp.kz/vendor/autoload.php --no-configuration /mnt/d/MP/mp.kz/tests/Auction/AuctionsListPublicSearchServiceTest.php
PHPUnit 9.0.1 by Sebastian Bergmann and contributors.
. 1 / 1 (100%)
Time: 1.48 seconds, Memory: 18.00 MB
OK (1 test, 3 assertions)
[SANDBOX]inf#NM0-MP:~$
The fix is going to be available tomorrow in 2020.1 EAP: https://youtrack.jetbrains.com/issue/WI-50201
https://www.jetbrains.com/phpstorm/nextversion/
I have written a testsuite using phpunit. When I run any of these tests, the success dots will appear, each with a couple of newlines in between. I have discovered that this only occurs when a factory is used, but can't find what further causes this. Help is greatly appreciated!
Example factory (note that there's no ?> at the end)
<?php
use App\Models\EventParticipant;
$factory->define(App\Models\EventParticipant::class, function () {
// return
return [
'n' => 0,
'ut' => date('Y-m-d H:i:s'),
'del' => 'no'
];
});
PHPUnit output for tests that use factories
PHPUnit 5.7.23 by Sebastian Bergmann and contributors.
.
.
.
.
.
. 6 / 6 (100%)
Time: 8.7 seconds, Memory: 36.00MB
OK (6 tests, 22 assertions)
PHPUnit output for tests that do not use factories
PHPUnit 5.7.23 by Sebastian Bergmann and contributors.
............................. 29 / 29 (100%)
Time: 6.32 seconds, Memory: 42.00MB
Issue solved! Six of the 83 factories had a leading empty line in them. Removing those of course also removed the new lines when running tests.
I have a large number of tests in a PHP Unit test suite.
All tests will pass when running the complete suite, however when run individually, certain tests may pass or fail depending on how I call PHP Unit:
$ php phpunit --configuration phpunit.xml --filter FooIntegrationTest
PHPUnit 5.7.19 by Sebastian Bergmann and contributors.
................ 16 / 16 (100%)
Time: 3.97 seconds, Memory: 109.50MB
OK (16 tests, 36 assertions)
vs.
$ php phpunit --configuration phpunit.xml tests/Integration/FooIntegrationTest.php
PHPUnit 5.7.21 by Sebastian Bergmann and contributors.
..........F.F... 16 / 16 (100%)
Time: 3.73 seconds, Memory: 111.75MB
FAILURES!
Tests: 16, Assertions: 36, Failures: 2.
The failures in question are unexpected results (i.e. the code runs just fine), no PHP errors or Exceptions.
The majority of tests will pass both ways, and there doesn't seem to be anything special about those tests that produce the above results.
Solved.... namespace conflict from an unrelated test class
phpunit ... FooIntegrationTest.php only opens & runs the single class file specfied
whereas phpunit ... --filter FooIntegrationTest will open every file in the suite to look for matching tests; which lead to a globally namespaced function in another file causing false pass.
Lesson learned: don't declare globally namespaced functions in unit test classes!
I'm working on Laravel 5.4 and trying to write the unit test to cover my function.
But I got a crazy bug. Please have look at my code and help me.
Here is my test file
class UserControllerTest extends TestCase
{
use DatabaseTransactions;
protected $isCreateToken = true;
public function testViewAccountDetailWithFieldsOK()
{
$this->get('/v1.0/me');
$this->assertResponseStatus(200);
}
public function testViewAccountDetailOK()
{
$this->get('/v1.0/me');
$this->assertResponseStatus(200);
}
}
When I try to run command: phpunit
I got this error:
PHPUnit 5.7.21 by Sebastian Bergmann and contributors.
.F 2 / 2 (100%)
Time: 710 ms, Memory: 14.00MB
There was 1 failure:
1) Tests\Controller\Api\UserControllerTest::testViewAccountDetailOK
Expected status code 200, got 404.
Failed asserting that 404 matches expected 200.
/Users/johnnguyen/Workspace/Laravel/mobile/vendor/laravel/browser-kit-testing/src/Concerns/MakesHttpRequests.php:744
/Users/johnnguyen/Workspace/Laravel/mobile/tests/Controller/Api/UserControllerTest.php:24
/Users/johnnguyen/.composer/vendor/phpunit/phpunit/src/TextUI/Command.php:186
/Users/johnnguyen/.composer/vendor/phpunit/phpunit/src/TextUI/Command.php:116
But when I run separately for each function:
John-Nguyen:mobile johnnguyen$ phpunit --filter=testViewAccountDetailOK
PHPUnit 5.7.21 by Sebastian Bergmann and contributors.
. 1 / 1 (100%)
Time: 591 ms, Memory: 14.00MB
OK (1 test, 2 assertions)
2 functions are the same code.
but I got the issue 404: NotFoundHttpException
This is the first time I got this issue.
Can anyone help me for this bug?
Many thanks.
I need to run a method before each test method. Based on the documentation https://phpunit.de/manual/current/en/appendixes.annotations.html#appendixes.annotations.before, I did this little test:
/**
* #before
*/
public function setupSomeFixtures()
{
echo "setupSomeFixtures\n";
}
/**
* #after
*/
public function tearDownSomeFixtures()
{
echo "tearDownSomeFixtures\n";
}
public function testTruc()
{
echo "un test\n";
}
The output:
PHPUnit 3.7.21 by Sebastian Bergmann.
Configuration read from <root>\phpunit.xml
.un test
Time: 5 seconds, Memory: 14.25Mb
OK (1 test, 0 assertions)
Am I missing something?
The Before annotation was introduced in the phpunit version 3.8 so in your 3.7 don't works.
This is my output:
PHPUnit 4.2.6 by Sebastian Bergmann.
Configuration read from /<omissis>/app/phpunit.xml.dist
The Xdebug extension is not loaded. No code coverage will be generated.
.setupSomeFixtures
tearDownSomeFixtures
.setupSomeFixtures
tearDownSomeFixtures
.setupSomeFixtures
tearDownSomeFixtures
IsetupSomeFixtures
tearDownSomeFixtures
.setupSomeFixtures
un test
tearDownSomeFixtures
Time: 451 ms, Memory: 23.00Mb
So upgrade to phpunit 3.8 or major