PHPUnit + MVC测试用例

时间:2015-04-15 13:50:28

标签: php testing model-view-controller phpunit

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

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

它位于database.php类中。

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

 <?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 / tests(我的助手和所有测试所在的文件)

我的计划http://imgur.com/IZd5QAv

的结构

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

2 个答案:

答案 0 :(得分:0)

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

<?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以获取更多配置选项。

答案 1 :(得分:0)

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