1

まず第一に、私は Zend Framework を初めて使用します。実際には、スコープ内で約 1 日経過しています。私はPHPUnitについてもまったく馬鹿です。単体テストなしで Zend Framework を使用することは実用的ではないと思います。短時間でその方法を理解する必要があります。これで私を助けていただければ幸いです。これが私がしたことです。

私はドキュメントを調べていますが、従うのが難しいと感じています。それが私だけなのか、未処理のドキュメントなのかはわかりません。何かが足りない気がします。

Composerもインストールしました。

これが私がやったことです。PEARをインストールした後にPHPUnitをインストールしました。phpunitここで、オプションのリストを提供する場所にいくつか置くと。だからうまくいっていると思います。

Zend Skeleton ApplicationGitHub から入手しました。スルーZend FrameworkComposerました。

私はドキュメントを調べました。頭が吹き飛びそうです!!!私の質問は、特に単体テストに関するものです。問題は http://framework.zend.com/manual/2.1/en/user-guide/unit-testing.htmlのコンテンツにあります。

<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="Bootstrap.php">
    <testsuites>
        <testsuite name="zf2tutorial">
            <directory>./ApplicationTest</directory>
        </testsuite>
    </testsuites>
</phpunit>

にあるこのファイルzf2-tutorial/module/Application/test。私の質問は、にBootstrap.php存在するファイルではありませんzf2-tutorial/module/Application/testか?

ドキュメントには、Bootstrap.php を作成するように記載されていますが、{Application Folder}/test. 実行phpunitするzf2-tutorial/module/Application/testと、ファイルを開くzf2-tutorial/module/Application/test/Bootstrap.phpことができなかったと表示されます。

次にBootstrap.php、XML を/../../../test/Bootstrap.php(XML ファイルに沿って作成されるドキュメントのアドバイスに従って) に変更し、エラーを解決しました。しかし、テスト カウントはゼロです。No tests executed!

テストクラスは次のとおりです。

<?php
namespace ApplicationTest\Controller;

use Zend\Test\PHPUnit\Controller\AbstractHttpControllerTestCase;
//use PHPUnit_Framework_TestCase;
//I also tried PHPUnit_Framework_TestCase instead of AbstractHttpControllerTestCase
class IndexControllerTest extends AbstractHttpControllerTestCase
{
    public function setUp()
    {
        $this->setApplicationConfig(
            //include '/path/to/application/config/test/application.config.php'
            include __DIR__ . '/../../../../config/application.config.php'
        );

        parent::setUp();
    }
    /**
     * @test
     */
    public function testIndexActionCanBeAccessed(){
        $this->dispatch('/');
        $this->assertResponseStatusCode(200);
        $this->assertModule('application');
        $this->assertControllerName('application_index');
        $this->assertControllerClass('IndexController');
        $this->assertMatchedRouteName('home');
    }
}

include '/path/to/application/config/test/application.config.php'??? に名前を変更したこの派手なパスinclude __DIR__ . '/../../../../config/application.config.php'

ファイルは test フォルダー内にありますzf-tutorial/module/Application/test/ApplicationTest/Controller

最後に、No tests executed!PHPユニットが言わなければならないことはすべてです。

私は何を間違えましたか?それを正しくするために何ができるでしょうか。

また、このテーマで短期集中講座を開催したいと思います (ブログへのリンクなど)。Amazon でさえ ZF2 に関する本を持っていないことは理解しています。手を貸していただければ幸いです。本当に緊急です!

前もって感謝します!

追加:: test フォルダー内の Bootstrap.php の作成を見逃していました。

新しい XML は次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="Bootstrap.php">
    <testsuites>
        <testsuite name="zf2tutorial">
            <directory>./ApplicationTest</directory>
        </testsuite>
    </testsuites>
</phpunit>

Bootstrap.php は次のようになります。

<?php

chdir(dirname(__DIR__));
include __DIR__ . '/../../../init_autoloader.php';

init_autoloader.phpzendframework ライブラリを見つけるように変更されました。

しかし、それでもPHPUnitは言うNo tests executed!

4

2 に答える 2

3

phpunit.xml を変更する

<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="Bootstrap.php">
    <testsuites>
        <testsuite name="zf2tutorial">
            <directory>./</directory>
        </testsuite>
    </testsuites>
</phpunit>
于 2013-02-18T08:52:50.070 に答える