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 因为我重新声明了某些 类 现在它工作正常。
今天尝试在自己开发的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 因为我重新声明了某些 类 现在它工作正常。