【PHPUnit】 インストール (Laravel 5.1 Homestead)

エラーログを追っていく。

vagrant@homestead:[該当ディレクトリ ]$ phpunit
You need to set up the project dependencies using Composer:

    composer install

You can learn all about Composer on https://getcomposer.org/.
vagrant@homestead:[該当ディレクトリ ]$ composer require phpunit

    Finished: success: 13, skipped: 0, failure: 0, total: 13

                                   
  [InvalidArgumentException]       
  Could not find package phpunit.  
                                   
  Did you mean one of these?       
      phpunit/phpunit              
      phpunit/php-timer            
      codeception/stub             
      brianium/paratest            
      symfony/phpunit-bridge 

そこで、phpunit/phpunitを選択

$ composer require phpunit/phpunit

    Finished: success: 1, skipped: 0, failure: 0, total: 1

Using version ^8.5 for phpunit/phpunit
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Installation request for sebastian/version (locked at 1.0.6) -> satisfiable by sebastian/version[1.0.6].
    - phpunit/phpunit 8.5.0 requires sebastian/version ^2.0.1 -> satisfiable by sebastian/version[2.0.1].
    - phpunit/phpunit 8.5.1 requires sebastian/version ^2.0.1 -> satisfiable by sebastian/version[2.0.1].
    - phpunit/phpunit 8.5.2 requires sebastian/version ^2.0.1 -> satisfiable by sebastian/version[2.0.1].
    - Conclusion: don't install sebastian/version 2.0.1
    - Installation request for phpunit/phpunit ^8.5 -> satisfiable by phpunit/phpunit[8.5.0, 8.5.1, 8.5.2].


Installation failed, reverting ./composer.json to its original content.

そこで、

$ composer require phpunit/phpunit ^8.5

    Finished: success: 3, skipped: 0, failure: 0, total: 3
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Installation request for sebastian/version (locked at 1.0.6) -> satisfiable by sebastian/version[1.0.6].
    - phpunit/phpunit 8.5.0 requires sebastian/version ^2.0.1 -> satisfiable by sebastian/version[2.0.1].
    - phpunit/phpunit 8.5.1 requires sebastian/version ^2.0.1 -> satisfiable by sebastian/version[2.0.1].
    - phpunit/phpunit 8.5.2 requires sebastian/version ^2.0.1 -> satisfiable by sebastian/version[2.0.1].
    - Conclusion: don't install sebastian/version 2.0.1
    - Installation request for phpunit/phpunit ^8.5 -> satisfiable by phpunit/phpunit[8.5.0, 8.5.1, 8.5.2].


Installation failed, reverting ./composer.json to its original content.

そこで、

$ composer require sebastian/version

    Finished: success: 1, skipped: 0, failure: 0, total: 1
Using version ^2.0 for sebastian/version
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - phpunit/php-code-coverage 2.2.4 requires sebastian/version ~1.0 -> satisfiable by sebastian/version[1.0.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.0.6] but these conflict with your requirements or minimum-stability.
    - phpunit/php-code-coverage 2.2.4 requires sebastian/version ~1.0 -> satisfiable by sebastian/version[1.0.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.0.6] but these conflict with your requirements or minimum-stability.
    - phpunit/php-code-coverage 2.2.4 requires sebastian/version ~1.0 -> satisfiable by sebastian/version[1.0.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.0.6] but these conflict with your requirements or minimum-stability.
    - Installation request for phpunit/php-code-coverage (locked at 2.2.4) -> satisfiable by phpunit/php-code-coverage[2.2.4].


Installation failed, reverting ./composer.json to its original content.

phpunit

$ phpunit
You need to set up the project dependencies using Composer:

    composer install

You can learn all about Composer on https://getcomposer.org/.

バージョン指定置けるキャレットの理解が曖昧だっったので、

^[version]
Caret(キャレット)記号を用いたときです。
major.minor.patchのうち、一番左の0以外の数字のバージョンを更新しないような、更新が可能です。

{
  "dependencies": {
    "foo": "^1.1.1",  // >=1.1.1 and <2.0.0
    "bar": "^0.1.1",    // >=0.1.1 and <0.2.0
    "hoge": "^0.0.1"      // >=0.0.1 and <0.0.2
  }
}

つまり、phpunit/phpunit ^8.5で出たエラーは、

  Problem 1
    - Installation request for sebastian/version (locked at 1.0.6) -> satisfiable by sebastian/version[1.0.6].
    - phpunit/phpunit 8.5.0 requires sebastian/version ^2.0.1 -> satisfiable by sebastian/version[2.0.1].
    - phpunit/phpunit 8.5.1 requires sebastian/version ^2.0.1 -> satisfiable by sebastian/version[2.0.1].
    - phpunit/phpunit 8.5.2 requires sebastian/version ^2.0.1 -> satisfiable by sebastian/version[2.0.1].
    - Conclusion: don't install sebastian/version 2.0.1
    - Installation request for phpunit/phpunit ^8.5 -> satisfiable by phpunit/phpunit[8.5.0, 8.5.1, 8.5.2].

これは

- sebastian/version[1.0.6] のインストールを実行トライ。 
- phpunit/phpunit 8.5.0は、sebastian/version 2.0.1以上が必要。
- phpunit/phpunit 8.5.1は、sebastian/version 2.0.1以上が必要。
- phpunit/phpunit 8.5.2は、sebastian/version 2.0.1以上が必要。
- 結果: sebastian/version 2.0.1はインストールしない。
- phpunit/phpunit ^8.5以上のインストールを実行トライ。

composer show [パッケージ名]で確認してみよう

$ composer show sebastian/version
name     : sebastian/version
descrip. : Library that helps with managing the version number of Git-hosted PHP projects
keywords : 
versions : * 1.0.6
type     : library
license  : BSD 3-Clause "New" or "Revised" License (BSD-3-Clause) (OSI approved) https://spdx.org/licenses/BSD-3-Clause.html#licenseText
source   : [git] https://github.com/sebastianbergmann/version.git 58b3a85e7999757d6ad81c787a1fbf5ff6c628c6
dist     : [zip] https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6 58b3a85e7999757d6ad81c787a1fbf5ff6c628c6
path     : [仮想環境内]
names    : sebastian/version

念のため

$ php -v
PHP 7.3.9-1+ubuntu18.04.1+deb.sury.org+1 (cli) (built: Sep  2 2019 12:54:24) ( NTS )

https://phpunit.readthedocs.io/ja/latest/installation.html