5

PHP プロジェクトのセットがあり、そのうちのいくつかは他のプロジェクトに依存しています。すべてに PHPUnit テストがあります。すべて Composer 経由でインストールでき、 composer.json ファイルを使用して依存関係を指定します。各プロジェクトのルートには、bootsrap ファイルを指す phpunit.xml.dist ファイルがあります。

これで、いくつかの直接的な依存関係といくつかの間接的な依存関係を持つこのプロジェクト Foo ができました。Foo の CI については、そのすべてのテストと、その依存関係のすべてのテストを実行したいと思います。

これは Composer を介して何らかの方法で行うことができますか? そうでない場合、これを行うための標準的なクリーンな方法はありますか?

4

3 に答える 3

5

コンポーザースクリプトを試すことができます

{
    "scripts": {
        "test": "phpunit"
    }
}

または、メイクファイルを作成してから、composer を使用してそれを呼び出します。

{
    "scripts": {
        "build-all": "make build-all"
    }
}
于 2014-12-11T06:34:29.813 に答える
4

すべてを含む TestSuite を作成するか、すべてのディレクトリを再帰的にドリルダウンしてテストを見つけるスクリプトを作成できると思います。

ただし、通常、ライブラリと依存関係のテストは、最初にインストールするとき以外は実行しません。アプリケーションのライブラリまたは依存関係コードを実際に変更することはありません (読む: すべきではありません) (これには例外があります)。そのため、依存関係をインストールしてそのテストを実行すると、合格すると仮定して、常に合格する必要があります。あなたは何も変わっていません。

依存関係のコードを変更する場合、特に依存関係を所有している場合は、実際には個別に行う必要があります。バグを修正するか、機能を追加するという 2 つの理由のいずれかでこれを行うと想定しています。依存関係のプロジェクト/ファイルを開き、変更のための 1 つ以上のテストを作成し、変更を行い、テストがパスすることを確認し、変更を依存関係にコミットします。次に、アプリケーションで更新された依存関係をプルダウンします。

tl;dr は、ライブラリや依存関係のテストを実行することについて心配する必要はないということです。それらは、アプリケーションでは触れないブラック ボックスである必要があるためです。

于 2013-10-05T19:02:27.607 に答える