在Travis Build

时间:2017-02-26 10:19:41

标签: php phpunit composer-php travis-ci

我在使用Travis运行PHPUnit时遇到了一些麻烦。

我的travis配置很简单

language: php
php:
  - 7.0
  - 7.1
script: phpunit

我的phpunit.xml如下,

<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="vendor/autoload.php">
    <testsuites>
        <testsuite name="Basic Test Suite">
            <directory suffix=".php">./tests/</directory>
        </testsuite>
    </testsuites>
</phpunit>

我的composer.json

{
    "name": "nikhilkuria/nikeandphp",
    "description": "A PHP library used to work with Nike+ API",
    "type": "library",
    "authors": [
        {
            "name": "nikhilkuria",
            "email": "nikhilkuria@gmail.com"
        }
    ],
    "require": {
        "monolog/monolog": "^1.22"
    },
    "require-dev": {
      "phpunit/phpunit": "5.7.*"
    },
    "autoload": {
        "psr-4": {"NikeAndPhp\\": "src/NikeAndPhp"}
}
}

问题是特拉维斯无法找到我的autoload.php。这是我在travis日志中看到的,

无法打开文件&#34; /home/travis/build/nikhilkuria/nikeandphp/vendor/autoload.php"。

整个日志都是here

这里似乎缺少什么?

3 个答案:

答案 0 :(得分:6)

除了Travis配置缺少composer install步骤之外,安装PHPUnit的方式也有问题。

script: phpunit表示您使用phpunit$PATH提供的全局安装的PHPUnit来调用PHPUnit。您很可能不希望这样,因为您已将PHPUnit列为composer.json中的开发依赖项。要使用使用Composer安装的PHPUnit,您需要使用script: ./vendor/bin/phpunit代替。

答案 1 :(得分:5)

正如我从您的日志输出中看到的那样,您没有运行composer install命令,这就是您收到Cannot open file "/home/travis/build/nikhilkuria/nikeandphp/vendor/autoload.php".错误消息的原因。

添加

before_script:
    - composer install

答案 2 :(得分:0)

单个bin-path

对于在composer.json中定义单个bin路径的情况,必须相应地调整phpunit的路径。

composer.json:

f  = np.array([0,2,3,1,0,0,1])
f_ = np.array([1,1,2,2,2,3,6])
M_ = M[f_[:,None],f_]

.travis.yaml:

{
  ...
  "config": {
    "vendor-dir": ".Build/vendor",
    "bin-dir": ".Build/bin",
  },
  ...
}