6

パッケージを作成しましたが、開発プロセスの一環として、単体テストを実行したいと考えています。これは基本的に、パッケージのオートローダーを登録するためのブートストラップ ファイルが必要であることを意味します。

私が調べたパッケージには特定のブートストラップ ファイルが含まれていないため、開発者が独自のパッケージをどのようにテストしているのかよくわかりません。

これは私のディレクトリ構造です

src
.CompanyName
..PackageName
...Class 1
...Class 2

tests
.Class1Test
.Class2Test

composer.json
phpunit.xml.dist

phpunitルートディレクトリ内で実行すると、すべてのテスト\\CompanyName\\PackageName\\Class1で見つかりませんでした。誰もそれらを含めていなかったので、これは合法です。問題は、クラスをいつ、どのように含めるかです。


ランダムなパッケージを見ると、依存していることがわかりますvendor/autoload.phpが、このベンダーディレクトリはありません。実行composer installして作成する必要がありますか?

4

2 に答える 2

5

さて、私は答えを考え出しました。
Composer は、私が使用できる独自のオートローダーを提供します。

  1. composer installまたはcomposer updateプロジェクトルートで実行します。vendorこれにより、composersautoload.phpファイルを含むディレクトリが作成されます。
  2. vendordirを.gitignore一緒に追加しますcomposer.lock
  3. コンポーザーphpunit.xml.distのオートローダーをブートストラップファイルとして指定する

サンプルphpunit.xml.distファイル

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

<phpunit backupGlobals="false"
         backupStaticAttributes="false"
         bootstrap="vendor/autoload.php"
         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="false"
         stopOnFailure="false"
         syntaxCheck="false"
        >

    <testsuites>
        <testsuite name="Your package's test suit">
            <directory>./tests/</directory>
        </testsuite>
    </testsuites>

</phpunit>

そこのブートストラップ エントリに注目してください。

于 2012-12-19T11:55:39.530 に答える
0

はい、実行する必要がありますcomposer update。すべてが /vendor/ に置かれ、後で削除できるため、試しても害はありません。

于 2012-12-19T11:54:51.633 に答える