无法在tests文件夹之外运行PHPUnit

时间:2015-09-22 02:13:47

标签: php codeigniter phpunit

所以我有一个CodeIgniter项目,我正在尝试使用PHPUnit。我的目录看起来像

application
node_modules
Gruntfile.js
scripts
vendor
tests
    PostTest.php
    phpunit.phar
    bootstrap.php
    phpunit.xml
composer.json
package.json

当我进入tests文件夹时,我可以执行“phpunit”。或者“php phpunit.phar”。在PostTest.php中运行测试并且工作正常,但是当我在根文件夹中并尝试执行“phpunit tests”时,我收到错误:

ERROR: Not Found

    The controller/method pair you requested was not found.

PostTest.php

<?php
class PostTest extends PHPUnit_Framework_TestCase {
      private $CI;

      public function setUp() {
          $this->CI = &get_instance();
      }

      public function testNotes() {
        $this->CI->load->model('class');
        $students = $this->CI->class->getStudents('11');
        $this->assertEquals(3, count($students->result_array()));
      }
}

phpunit.xml

<?xml version="1.0" encoding="UTF-8"?>
    <phpunit bootstrap="bootstrap.php"
             colors="true"
             convertErrorsToExceptions="true"
             convertNoticesToExceptions="true"
             convertWarningsToExceptions="true"
             processIsolation="false"
             stopOnFailure="false"
             syntaxCheck="false"
             verbose="true">
    </phpunit>

有没有人知道为什么我会收到这个错误?

1 个答案:

答案 0 :(得分:1)

Phpunit在当前目录中查找phpunit.xml,并下载到目录中以查找测试文件。所以将此文件移动到webroot,您应该排序。或者,您可以在phpunit.xml中指定要运行的测试目录,并将其保留在原来的位置并添加类似这样的内容(未经测试)以使其包含在webroot中的测试:

<testsuites>
    <testsuite name="My Test Suite">
        <directory suffix="Test.php">../</directory>
    </testsuite>
</testsuites>

https://phpunit.de/manual/current/en/appendixes.configuration.html