symfony2 用phpunit進行單元測試
symfony2例項教程:
https://wusuopu.gitbooks.io/symfony2_tutorial/content/chapter08/README.html
lime測試框架:
http://symfony.com/legacy/doc/jobeet/1_2/zh_CN/08?orm=Propel
PHPUnit單元測試:
http://twpug.net/docs/symblog/docs/testing-unit-and-functional-phpunit.html
PHPUnit手冊:
https://phpunit.de/manual/current/zh_cn/installation.html
PHPUnit初探:
http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2011/0216/7534.html
symfony2-jobeet-tutorial:
https://github.com/happen-zhang/symfony2-jobeet-tutorial/blob/master/chapter-08/chapter-08.md
symfony2 cookbook:
http://wiki.jikexueyuan.com/project/symfony-cookbook/testing.html
一下是phpunit在symfony2的的配置文件
(1)phpunit的安裝
去phpunit官網下載phpunit(https://phpunit.de/)安裝包phpunit.phar,注意對應自己的php版本進行下載安裝.
下載完成後要全域性安裝:(具體安裝參考https://phpunit.de/manual/current/zh_cn/installation.html)
如果要全域性安裝 PHAR:
$ chmod +x phpunit.phar
$ sudo mv phpunit.phar /usr/local/bin/phpunit
$ phpunit --version
PHPUnit x.y.z by Sebastian Bergmann and contributors.
(2)安裝完成後在symfony2進行配置(具體可參考https://wusuopu.gitbooks.io/symfony2_tutorial/content/chapter08/README.html)
PHPUnit對應的配置檔案為app/phpunit.xml.dist
,這是個以.dist
能結尾的檔案,可能需要將其複製一份到app/phpunit.xml
。它配置了一些測試引數,其內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!-- http://phpunit.de/manual/4.1/en/appendixes.configuration.html -->
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
backupGlobals="false"
colors="true"
bootstrap="bootstrap.php.cache"
>
<testsuites>
<testsuite name="Project Test Suite">
<directory>../src/*/*Bundle/Tests</directory>
<directory>../src/*/Bundle/*Bundle/Tests</directory>
</testsuite>
</testsuites>
<!--
<php>
<server name="KERNEL_DIR" value="/path/to/your/app/" />
</php>
-->
<filter>
<whitelist>
<directory>../src</directory>
<exclude>
<directory>../src/*/*Bundle/Resources</directory>
<directory>../src/*/*Bundle/Tests</directory>
<directory>../src/*/Bundle/*Bundle/Resources</directory>
<directory>../src/*/Bundle/*Bundle/Tests</directory>
</exclude>
</whitelist>
</filter>
</phpunit>
注意檔案中對應的路徑和自己真實的路徑要相同.
(3)編寫單元測試樣例
這裡最主要的問題為在執行單元測試之前,要執行起整個環境.可參考demo
<?php
namespace Topxia\Service\Test\Course;
use Topxia\Service\User\Impl\UserServiceImpl;
use Topxia\Service\Common\ServiceKernel;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class CourseServiceTest extends \PHPUnit_Framework_TestCase
{
public function setUp() {
require_once __DIR__.'/../../../../../app/AppKernel.php';
$kernel = new \AppKernel('prod', true);
$kernel->boot();
// START: init service kernel
$serviceKernel = ServiceKernel::create($kernel->getEnvironment(), $kernel->isDebug());
$serviceKernel->setParameterBag($kernel->getContainer()->getParameterBag());
$serviceKernel->setConnection($kernel->getContainer()->get('database_connection'));
$serviceKernel->getConnection()->exec('SET NAMES UTF8');
}
public function testIndex()
{
$User = new UserServiceImpl();
$this->assertEquals(35, count($User->getUser("1")));
// $this->assertEquals('sdf', $User::getUser("90"));
}
public function webIndex()
{
$client = WebTestCase::createClient();
$crawler = $client->request('GET', '/hello/Fabien');
$this->assertTrue($crawler->filter('html:contains("Hello Fabien")')->count() > 0);
}
public function tearDown()
{
}
}
(4)執行單元測試
用命令列:
phpunit -c app src/Blogger/BlogBundle/Tests/Controller/PageControllerTest.php
或者 phpunit -c app
相關文章
- phpunit單元測試PHP
- PHP單元測試框架PHPUnit的使用PHP框架
- JavaScript 測試教程-part 1:用 Jest 進行單元測試JavaScript
- 使用JUnit進行單元測試
- 使用Jest進行React單元測試React
- Jest & enzyme 進行react單元測試React
- 使用 Spring 進行單元測試Spring
- 使用 QUnit 進行 JavaScript 單元測試JavaScript
- [譯]對 React 元件進行單元測試React元件
- 使用 Spring Boot 進行單元測試Spring Boot
- 利用HSQLDB 進行Hibernate單元測試SQL
- 用 Mocha 和 Chai 對 JavaScript 程式碼進行單元測試AIJavaScript
- 基於 Laravel 框架的 phpunit 單元測試爬坑記錄Laravel框架PHP
- 如何對非同步呼叫進行單元測試非同步
- phpunit測試成功phpunit測試實踐程式碼PHP
- 使用Angular CLI進行單元測試和E2E測試Angular
- Python中的單元測試框架:使用unittest進行有效測試Python框架
- 在Hadoop中使用MRUnit進行單元測試Hadoop
- go 單元測試進階篇Go
- Angular單元測試如何只執行指定的測試用例,提高測試速度Angular
- FastAPI(43)- 基於 pytest + requests 進行單元測試ASTAPI
- 使用xUnit為.net core程式進行單元測試(4)
- 使用xUnit為.net core程式進行單元測試(3)
- 使用xUnit為.net core程式進行單元測試 -- Assert
- 使用xUnit為.net core程式進行單元測試(1)
- jmock 進行單元測試的一些疑問Mock
- 測試 之Java單元測試、Android單元測試JavaAndroid
- 如何測試 Flutter 應用? ー 單元測試Flutter
- 單元測試:單元測試中的mockMock
- 前端進階課程之單元測試前端
- 測試開發之單元測試-禪道結合ZTF驅動單元測試執行
- Vue 應用單元測試的策略與實踐 04 - Vuex 單元測試Vue
- Golang 學習——基於 Gin 框架進行 httptest 單元測試Golang框架HTTP
- 使用SAP CRM mock框架進行單元測試的設計Mock框架
- 使用FakeAsync對Angular非同步程式碼進行單元測試Angular非同步
- 如果利用 python 對 java 程式碼進行 單元測試?PythonJava
- Vue 應用單元測試的策略與實踐 02 - 單元測試基礎Vue
- Vue 應用單元測試的策略與實踐 03 - Vue 元件單元測試Vue元件