Jenkins:在Yii-Framework中使用名称空间的phpunit

时间:2013-11-12 13:11:08

标签: yii jenkins namespaces continuous-integration phpunit

我是詹金斯的新手。我尝试在这个website上使用ci。如果我构建我的项目,我得到以下consol输出错误

phpunit:
 [exec] PHPUnit 3.7.28 by Sebastian Bergmann.
 [exec] 
 [exec] Cannot open file "/var/www/repo/project/protected/tests/bootstrap.php".
 [exec] 

BUILD FAILED
 /var/www/repo/build.xml:117: exec returned: 1

我的build.xml

<target name="phpunit" description="Run unit tests with PHPUnit">
  <exec executable="phpunit" failonerror="true">
     <arg line="--log-junit ${basedir}/build/logs/phpunit.xml /var/www/repo/project/protected/" />
 </exec>
 </target>

我的项目结构是这样的:

-repo
  -project
    -protected
      -components
      -config
      - ....
      - tests
         - unit
         - bootstrap.php
         - ReflectionTest.php
  -build
    -....
  -build.xml
  -phpunit.xml.dist

我正在使用带名称空间的Yii-Framework。如果我从tests目录执行phpunit命令它工作得很好。但如果我在其他地方执行它,我会收到这样的错误:

PHP Fatal error:  Class 'application\tests\ReflectionTest' not found in /var/www/repo/project/protected/tests/unit/account/manager/ManagerTest.php on line 13

这是我的测试:

<?php

namespace application\tests\unit\account\manager;

use application\modules\account\manager\Manager;
use application\models;
use Yii;
use application\tests\ReflectionTest;

/**
 * This class test the protected and public methods of SignupManager
 */
class ManagerTest extends ReflectionTest {

这是我的phpunit.xml.dist

<phpunit bootstrap="project/protected/tests/bootstrap.php"
        colors="false"
        convertErrorsToExceptions="true"
        convertNoticesToExceptions="true"
        convertWarningsToExceptions="true"
        stopOnFailure="false">

    <selenium>
        <browser name="Internet Explorer" browser="*iexplore" />
        <browser name="Firefox" browser="*firefox" />
    </selenium>

    <testsuites>
    <testsuite name="Project Test Suite">
        <directory>project/protected/tests/*</directory>
    </testsuite>
    </testsuites>

</phpunit>

我的错误在哪里?

2 个答案:

答案 0 :(得分:0)

我使用phpunit.xml文件位置的相对路径来引用我的引导程序文件。像这样:

<phpunit bootstrap="bootstrap.php"
    colors="false"
    convertErrorsToExceptions="true"
    convertNoticesToExceptions="true"
    convertWarningsToExceptions="true"
    stopOnFailure="false">

答案 1 :(得分:0)

我在github上为Yii创建了一个示例项目。在那里你可以看到设置应该如何让phpunit正常工作。查看https://github.com/perlmonkey/yii-sample-project

此外,您必须注意所有相关的PHPUnit模块都可用于测试。这就是为什么我创建了一个自动脚本来为我配置Jenkins:https://github.com/perlmonkey/php-ci