PHPUnit + MVC 测试用例

PHPUnit + MVC testcases

今天尝试在自己开发的MVC框架中实现PHPUnit。当我尝试 运行 我写的测试用例时,他总是抱怨他不知道 classes 等等。所以我试着加载一个包含一堆包含的帮助文件,然后它给了我一个不同的错误。

    Fatal error: Class 'MysqliDb' not found in /home/ansit-com/workspace/abrechnung/mvc/model/Model.php on line 7

这位于 database.php class。

我的帮助文件的代码如下所示。

 <?php 
include('controllers/Controller.php'); 
include('model/Model.php');
include('view/view_class.php');
include('view/libs/Smarty.class.php');
include('configs/config.inc.php');
include('libs/database.php');
include('libs/PrefixCache.php');
include('libs/helper.php');
include('libs/language.php');
include('libs/decimal_mark.php');
include('libs/validation.php');
include ('libs/permissionCheck.php');
include('theme/configs/constant.php');
?>

我已经尝试更改路径名,我有以下结构: projectname/controllers projectname/models projectname/tests(我的助手和所有测试所在的文件)

我的程序结构http://imgur.com/IZd5QAv

这是我第一次使用单元测试,在互联网上我只能找到如何在现有框架中进行测试的示例。 如果我在这里忘记提及某些内容,请告诉我。

项目根目录下有phpunit.xml文件吗?如果是这样,您可以在 phpunit 元素中指定一个 bootstrap 属性,您可以使用帮助文件设置该属性:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.6/phpunit.xsd"
         bootstrap="bootstrap.php">
    <testsuites>
        <testsuite name="ProjectTestSuite">
            <!-- List the folder(s) in which your tests are, here -->
            <directory suffix=".php">./tests</directory>

        </testsuite>
    </testsuites>
</phpunit>

使用此文件,您可以从项目根目录 运行 phpunit,它会自动从 phpunit.xml 文件中获取设置。

另请参阅 https://phpunit.de/manual/current/en/appendixes.configuration.html#appendixes.configuration.phpunit 了解更多配置选项。

好的,我解决了这个问题。 我将所有路径更改为绝对路径。将所有包含更改为 include_once 因为我重新声明了某些 类 现在它工作正常。