problèmes de tests unitaires phpunit
代言
代言 2017-06-26 10:49:13
0
2
1054
<?php 
namespace app\tests;

use PHPUnit\Framework\TestCase;
use GuzzleHttp\Client;

class UserTest extends TestCase
{
    private $client;

    public function setUp()
    {
        $this->client = new \GuzzleHttp\Client( [
            'base_uri' => 'http://z.slim.com',
            'http_errors' => false, 
        ]);
    }


    public function testUser()
    {
        $response = $this->client->get('/user/vilay');
        $this->assertEquals(200, $response->getStatusCode());
        $body = $response->getBody();
        $data = json_decode($body, true);
        $this->assertArrayHasKey('code', $data);
        $this->assertArrayHasKey('msg', $data);
        $this->assertArrayHasKey('data', $data);
        $this->assertEquals(0, $data['code']);
    }
}

Après avoir écrit le code de test, exécutez-le


php vendor/bin/phpunit app/tests/UserTest.php

Le test n'a pas été exécuté et le script phpunit a été généré directement


dir=$(d=${0%[/\]*}; cd "$d"; cd "../phpunit/phpunit" && pwd)

# See if we are running in Cygwin by checking for cygpath program
if command -v 'cygpath' >/dev/null 2>&1; then
    # Cygwin paths start with /cygdrive/ which will break windows PHP,
    # so we need to translate the dir path to windows format. However
    # we could be using cygwin PHP which does not require this, so we
    # test if the path to PHP starts with /cygdrive/ rather than /usr/bin
    if [[ $(which php) == /cygdrive/* ]]; then
        dir=$(cygpath -m "$dir");
    fi
fi

dir=$(echo $dir | sed 's/ /\ /g')
"${dir}/phpunit" "$@"

De plus, j'ai configuré le test unitaire dans la variable d'environnement système et exécuté le test


phpunit app/tests/UserTest.php

Besoin d'introduire autoload.php en tête du code


require_once 'vendor/autoload.php';

N'est-il pas possible de charger automatiquement

代言
代言

répondre à tous(2)
大家讲道理

Résolu, j'ai trouvé la solution moi-même après avoir été invité par les réponses données par les deux amis précédents

La plupart des tutoriels trouvés en ligne sont exécutés à l'aide de commandes


php vendor/bin/phpunit tests.php

Cela peut être dû à des raisons de version. La version précédente était un fichier de script php, alors que ma version est "phpunit/phpunit": "^6.2"vendor/bin/phpunitun fichier de script shell (je ne connais pas les détails car je n'ai pas utilisé 5.x).

La bonne façon de l'utiliser est de donner au fichier de script l'autorisation d'exécutable


chmod a+x vendor/bin/phpunit
chmod a+x vendor/phpunit/phpunit/phpunit

Exécuter des tests


sh vendor/bin/phpunit app/tests/UserTest.php

La méthode de chargement automatique est implémentée. À l'aide du package de composants phpunit chargé par composer, il existe un phpunit.xml dans le répertoire racine du projet, où vous pouvez définir le chemin de chargement automatique

<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/5.7/phpunit.xsd"
         bootstrap="vendor/autoload.php"
         backupGlobals="false"
         beStrictAboutOutputDuringTests="true"
         beStrictAboutTestsThatDoNotTestAnything="true"
         beStrictAboutTodoAnnotatedTests="true"
         verbose="true">
    <testsuite>
        <directory suffix="Test.php">tests</directory>
    </testsuite>

    <filter>
        <whitelist processUncoveredFilesFromWhitelist="true">
            <directory suffix=".php">src</directory>
        </whitelist>
    </filter>

    <logging>
        <log type="coverage-html" target="build/coverage/html" title="phpDox"
             charset="UTF-8" highlight="true" lowUpperBound="60" highLowerBound="90"/>
    </logging>

</phpunit>

世界只因有你

Vous pouvez écrire un fichier de test unitaire en dehors du framework et utiliser phpunit xxx.php pour le tester. De cette façon, vous saurez si phpunit est installé normalement et si la manière d'introduire autoload.php est incorrecte. Vérifiez-les un par un.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!