Codecept没有显示任何php单元测试结果

时间:2021-03-31 05:01:16

标签: php codeception

我是 php 和 codecept 的新手,一直在学习教程,但是当我尝试运行一个简单的单元测试时,我没有得到任何测试结果。

我的项目结构如下:

enter image description here

类的代码是:

Config.php

<?php
//Have we already been here?
if (!defined('DB_HOST')) {
 
    // Define DB Params
    define("DB_HOST", "localhost");
    define("DB_USER", "root");
    define("DB_PASS", "");
    define("DB_NAME", "philter");
    
    // Define URL
    define("ROOT_URL", "http://bit703.module2/");
 
    // Add some helpful filepath constants
    define('APP_ROOT', dirname(realpath(__FILE__)) . '/');
    define('VIEW_ROOT', APP_ROOT . 'Views/');
 
    // Tell this sytem we are in a development environment
    define('DEV_ENV', true);
}

Utils.php

<?php
 
/* 
 * spl_autoload_register() allows you to register multiple functions 
 * (or static methods from your own Autoload class) 
 * that PHP will put into a stack/queue and call sequentially 
 * when a "new Class" is declared. 
 */
spl_autoload_register(function ($class) {
 
    /*
     *  Project-specific namespace prefix
     */
    $prefix = 'BIT703\\';
  
    /*
     *  Does the class use the namespace prefix?
     */
    $len = strlen($prefix);
    if (strncmp($prefix, $class, $len) !== 0) {
        // no, move to the next registered autoloader
        return;
    }
  
    /*
     *  Get the relative class name
     */
    $relative_class = substr($class, $len);
    print("<pre>".print_r($relative_class, 1)."</pre>");
  
    /*
     *  Replace the namespace prefix with the base directory, replace namespace
     *  separators with directory separators in the relative class name, append
     *  with .php
     */
    $file = APP_ROOT . str_replace('\\', '/', $relative_class) . '.php';
    print("<pre>".print_r($file, 1)."</pre>");
  
    die();
    
    /*
     *  if the file exists, require it
     */
    if (file_exists($file)) {
        require $file;
    }
  });
  $router = new \BIT703\Classes\Router();

Bootstrap.php

<?php

require  'config.php';
require 'utils.php';

RouterTest.php

<?php
require(dirname(__FILE__).'/../../src/App/bootstrap.php');

use \BIT703\Classes\Router as Router;

class RouterTest extends \Codeception\Test\Unit
{
    /**
     * @var \UnitTester
     */
    protected $tester;
    
    protected function _before()
    {
    }

    protected function _after()
    {
    }

    // tests
    public function testSomeFeature()
    {
        $this->assertInstanceOf('\BIT703\Classes\Router', $this->router);
    }

}

这是我运行测试时得到的输出:

$ php vendor/bin/codecept run unit RouterTest
Codeception PHP Testing Framework v4.1.18
Powered by PHPUnit 9.5.4 by Sebastian Bergmann and contributors.
<pre>Classes\Router</pre>. 
<pre>/Applications/MAMP/htdocs/bit703/module2/src/App/Classes/Router.php</pre>

如果我注释掉“require 'utils.php';”从 bootstrap.utils,然后我收到一条正确的测试失败消息,但是一旦包含它,它就会停止工作。

谁能看出我错在哪里?

1 个答案:

答案 0 :(得分:0)

我看到您创建了默认的 Codeception 目录结构,其中包含单元、功能和验收目录。

测试文件必须放在这些目录之一,所以将 RouterTest.php 文件移动到单元目录。