Testen
Testen
ν我们米尔在米尔河畔functionaliteit德河畔applicatie het toevoegen zijn moeten我们在锄皇后区praten deze testen服务员。
Leuke anekdote:反向vond甚至错误tijdens het schrijven van de说hoofdstuk测试。
ob娱乐下载Symfony maakt gebruik van PHPUnit) voor单元测试。我们installeren说:
1
美元ob娱乐下载symfony作曲家点播phpunit) - dev
单元测试schrijven
De eerste类waarvoor schrijven服务员是我们测试SpamChecker
。Genereer甚至unittest:
1
美元ob娱乐下载symfony控制台:测试TestCase SpamCheckerTest
Het testen van de SpamChecker甚至uitdaging,希望我们willen不行telkens de aanroepen Akismet API。我们服务员de API乔汉纳。
甚至我们schrijven甚至eerste测试voor wanneer de API输出端teruggeeft:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30 31
- - - /测试/ SpamCheckerTest.php+ + + b /测试/ SpamCheckerTest.php@@ 2,12 + 2,26 @@名称空间的应用程序\测试;+使用App \实体\评论;+使用App \ SpamChecker;使用PHPUnit) \ Framework \ TestCase;+使用Syob娱乐下载mfony \ \ HttpClient \ MockHttpClient组件;+使用Syob娱乐下载mfony \组件\ HttpClient \ \ MockResponse反应;+使用Syob娱乐下载mfony \ \ HttpClient \ ResponseInterface合同;类SpamCheckerTest扩展TestCase {——公共职能testSomething():空白+公共职能testSpamScoreWithInvalidRequest():空白{- $ this - > assertTrue(真正的);+ $ = new评论评论();+ $评论- > setCreatedAtValue ();+ $上下文= [];++ $客户=新MockHttpClient([新MockResponse(“无效”,(“response_headers”= > [x-akismet-debug-help:无效的键的]])));+ $检查=新SpamChecker(客户美元,'中的');++ $ this - > expectException (\ RuntimeException::类);+ $ this - > expectExceptionMessage('无法检查垃圾邮件:无效(无效键)。”);+ $检查器- > getSpamScore(评论,上下文美元);}}
德MockHttpClient
类maakt het mogelijk om elke te乔汉纳HTTP服务器。Deze aanvaard即使数组实现MockResponse
bevatten instanties死de verwachte身体在响应标头。
Vervolgens roepen我们德getSpamScore ()
方法感染en controleren我们er甚至异常wordt getriggerd通过德expectException ()
方法范PHPUnit)。
到德测试外的om te controleren泽slagen:
1
美元ob娱乐下载symfony php bin / phpunit)
变迟我们测试toevoegen voor de快乐流:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30 31 32 33 34 35
- - - /测试/ SpamCheckerTest.php+ + + b /测试/ SpamCheckerTest.php@@ -24、4 + 24、32 @@类SpamCheckerTest扩展TestCase $ this - > expectExceptionMessage(“无法检查垃圾邮件:无效(无效键)。”);$检查器- > getSpamScore(评论,上下文美元);}++ / * *+ * @dataProvider provideComments+ * /+公共职能testSpamScore (int expectedScore美元,美元ResponseInterface响应,评论评论,美元数组$上下文)+ {+ $客户=新MockHttpClient([$响应]);+ $检查=新SpamChecker(客户美元,'中的');++ $得分= $检查器- > getSpamScore(评论,上下文美元);+ $ this - > assertSame (expectedScore美元,美元的分数);+}++公共静态函数provideComments (): iterable+ {+ $ = new评论评论();+ $评论- > setCreatedAtValue ();+ $上下文= [];++ $ = new MockResponse (“[' response_headers ' = > [x-akismet-pro-tip:丢弃的]]);+“blatant_spam”= >[2,反应,美元美元评论,美元背景);++ $响应=新MockResponse(“真正的”);+“垃圾邮件”= >[1美元反应评论美元,美元背景);++ $响应=新MockResponse('错误');+“火腿”= >[0,反应,美元评论,美元背景);+}}
在国家om PHPUnit-dataproviders stellen ons dezelfde testlogica voor meerdere te hergebruiken测试点。
Functionele测试schrijven voor控制器
Het testen van控制器是即使beetje安德斯·丹Het testen van甚至gewone PHP类,omdat我们泽willen uitvoeren de上下文van甚至HTTP请求。
Maak甚至voor de Conference-controller functionele测试:
Het gebruik范ob娱乐下载
在plaats范PHPUnit) \ \ TestCase的框架
als basisklasse voor onze测试geeft ons甚至mooie abstractie voor functionele测试。
德美元的客户
variabele simuleert甚至浏览器。在plaats van http调用naar de服务器外的te voeren wordt de Symfony-toepassob娱乐下载ing rechtstreeks opgeroepen。Deze策略heeft甚至aantal voordelen: het veel snel丹te moeten communiceren tussen de客户机en de服务器低平火山口het maakt het显得mogelijk om na elke http请求,te inspecteren de国家van de服务。
Deze eerste测试controleert de主页HTTP响应terugstuurt甚至200。
断言zoalsassertResponseIsSuccessful
沃顿boven op PHPUnit) toegevoegd om het颂歌te vergemakkelijken。佐薇zijn er veel范说门Symfony toegevoegd soort断言。ob娱乐下载
提示
我们hebben/
gebruikt voor de URL,在plaats van deze te genereren通过路由器。说多恩我们bewust佐薇,omdat het testen van de URL的货车eindgebruikers deel uitmaakt van窟我们willen testen。Als het routepad wijzigt, zullen测试falen en我herinneren dat我waarschijnlijk oude URL酩悦omleiden naar de nieuwe om zoekmachines en走读生网站死er naar诈骗tevreden te houden。
Configuratie voor de testomgeving
Standaard沃顿PHPUnit-tests gedraaid de Symfonyob娱乐下载测试
在het omgeving zoals国家gedefinieerd PHPUnit) configuratiebestand。
Om de测试te变迟functioneren dienen我们德AKISMET_KEY
voor deze测试
在te stellen omgeving:
1
美元ob娱乐下载symfony控制台的秘密:集AKISMET_KEY——env =测试
威尔遇见甚至testdatabase
Zoals我们hebben gezien stelt de Symfonob娱乐下载y CLI automatisch de omgevingsvariabeleDATABASE_URL
女儿的beschikking。WanneerAPP_ENV
gelijk是感染。测试
,zoals ingesteld bij het draaien van PHPUnit), verandert het de databasenaam范应用程序
naarapp_test
。Hierdoor hebben de测试匈牙利语特征数据库。
说的是erg belangrijk omdat我们stabiele gegevens nodig hebben om onze测试外的te voeren en我们willen齐克不行在de ontwikkelings-database gegevens overschrijven。
Voordat我们国家zijn de测试te draaien dienen我们德测试
数据库te”initialiseren”(het aanmaken van de数据库en deze migreren):
1 2
美元ob娱乐下载symfony控制台学说:数据库:创建- env =测试美元ob娱乐下载symfony控制台学说:迁移:迁移- n - env =测试
请注意
在Linux和类似操作系统,您可以使用APP_ENV =测试
而不是——env =测试
:
1
美元APP_ENV =测试ob娱乐下载symfony控制台学说:数据库:创建
Als我德测试νdraait zal PHPUnit)不行communiceren我ontwikkelings-database会面。Om enkel de nieuwe测试te draaien geef我het垫van de类门:
1
美元ob娱乐下载php bin / symfony /控制器/ ConferenceControllerTest.php phpunit)测试
提示
Als甚至测试mislukt,菅直人het nuttig zijn om het响应对象内德te onderzoeken。我菅直人het对象benaderen通过客户端- > getResponse美元()
en middels回声
bekijken锄het eruitziet。
夹具definieren
Om de lijst van reacties de paginering en het indienen van het formulier te kunnen testen, moeten我们de数据库vullen遇到enkele gegevens。在我们willen dat de gegevens tussen de testruns hetzelfde zijn om de测试te变迟slagen。我们夹具zijn precies窟nodig hebben。
段德学说装置包:
1
美元ob娱乐下载symfony作曲家点播orm-fixtures - dev
即使nieuwe Tijdens de installatiesrc / DataFixtures /
目录aangemaakt甚至voorbeeldclass相遇,klaar om te沃顿aangepast。Voeg voorν矫饰的conferenties en甚至中脚趾活化:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30 31 32 33 34 35 36 37 38
- - - / src / DataFixtures / AppFixtures.php+ + + b / src / DataFixtures / AppFixtures.php@@ 2,6 + 2,8 @@名称空间的应用程序\ DataFixtures;+使用App \实体\评论;+使用App \实体\会议;使用原则\包\ FixturesBundle \夹具;使用原则\ \ ObjectManager持久性;8 + @@ 9日11日24 @@类AppFixtures延伸夹具{公共函数加载(ObjectManager经理美元):{无效——/ / $产品=新产品();——/ / $经理- >保存(产品);+ $阿姆斯特丹=新的会议();+ $阿姆斯特丹- > setCity(阿姆斯特丹);+ $阿姆斯特丹- > setYear (' 2019 ');+ $阿姆斯特丹- > setIsInternational(真正的);+ $经理- >保存(阿姆斯特丹);++ $巴黎=新的会议();+ $巴黎- > setCity(巴黎);+ $巴黎- > setYear (' 2020 ');+ $巴黎- > setIsInternational(假);+ $经理- >保存(巴黎);++ $ comment1 =新的评论();+ $ comment1 - > setConference阿姆斯特丹($);+ $ comment1 - > setAuthor(“法”);+ $ comment1 - > setEmail (fabien@example.com);+ $ comment1 - > setText(“这是一个伟大的会议。”);+ $经理- >保存($ comment1);$经理- >冲洗();}
Wanneer我们de fixture拉登,沃顿阿莱gegevens verwijderd;inclusief de admin-gebruiker。Om dat te voorkomen voegen我们德河畔admin-gebruiker脚趾de装置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30 31 32 33 34 35 36
- - - / src / DataFixtures / AppFixtures.php+ + + b / src / DataFixtures / AppFixtures.php20 @@ @@ 2 13 + 2名称空间的应用程序\ DataFixtures;+使用App \实体\管理;使用App \实体\评论;使用App \实体\会议;使用原则\包\ FixturesBundle \夹具;使用原则\ \ ObjectManager持久性;+使用Syob娱乐下载mfony \组件\ PasswordHasher \切肉机\ PasswordHasherFactoryInterface;类AppFixtures延伸夹具{+公共职能__construct (+私人PasswordHasherFactoryInterface passwordHasherFactory美元,+){+}+公共函数加载(ObjectManager经理美元):空白{$阿姆斯特丹=新的会议();@@ -30 6 + 37 12 @@类AppFixtures延伸夹具$ comment1 - > setText(“这是一个伟大的会议。”);(管理器- >坚持美元comment1);+ $管理= admin ();+ $管理- > setRoles ([' ROLE_ADMIN ']);+ $管理- > setUsername(管理);+ $管理- >向setPassword ($ this - > passwordHasherFactory - > getPasswordHasher (admin::类)- >哈希('管理'));+ $经理- >保存(管理);+$经理- >冲洗();}}
提示
Als我不行米尔知道维尔克服务我voor甚至bepaalde taak酩悦gebruiken, gebruik丹调试:自动装配
见过甚至bepaald trefwoord:
1
美元ob娱乐下载symfony控制台调试:自动装配侍者
Het crawlen van functionele甚至网站测试
Zoals我们hebben gezien simuleert de http客户端死在德测试wordt gebruikt甚至浏览器,zodat我们门德网站kunnen navigeren alsof我们甚至gebruiken无头浏览器。
Voeg甚至nieuwe测试脚趾死op甚至conferentiepagina van de主页klikt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
- - - /测试/控制器/ ConferenceControllerTest.php+ + + b /测试/控制器/ ConferenceControllerTest.php@@ -14,4 + 14、19 @@类ConferenceControllerTest延伸WebTestCase $ this - > assertResponseIsSuccessful ();$ this - > assertSelectorTextContains (h2,给你反馈);}++公共testConferencePage()函数+ {+ $客户=静态:createClient ();+ $履带= $客户- >请求(‘得到’,‘/’);++ $ this - > assertCount(2 $履带- >过滤器(h4));++ $客户- > clickLink(“视图”);++ $ this - > assertPageTitleContains(阿姆斯特丹);+ $ this - > assertResponseIsSuccessful ();+ $ this - > assertSelectorTextContains (h2,阿姆斯特丹2019);+ $ this - > assertSelectorExists (“div:包含(“有1评论”));+}}
变迟我们eenvoudige塔阿尔beschrijven窟er在gebeurt deze测试:
- 净als bij德eerste检验我们服务员naar de主页;
- 德
请求()
方法geeft甚至履带
instantie terug死我helpt elementen op de pagina te vinden (zoals链接、formulieren一切窟我菅直人bereiken了XPath的css选择器); - Dankzij甚至css选择器kunnen我们vaststellen dat er矫饰的conferenties op de主页staan vermeld;
- Vervolgens klikken我们op de链接“Bekijken”(omdat er不行米尔丹甚至链接tegelijk菅直人沃顿aangeklikt,肯塔基州Symfony automatisch de eerste死geob娱乐下载vonden wordt);
- 我们checken op de paginatitel德德反应
< h2 >
van de pagina, om er齐克van te zijn dat我们op de juiste pagina zitten海登(我们的书de路线kunnen vergelijken); - 合计槽stellen我们巨大的dat er 1中op活化de pagina国家。
div:包含()
甚至是geen geldige css选择器,低平火山口Symfonyob娱乐下载 heeft aantal leuke toevoegingen,河畔ontleend jQuery。
在plaats van op tekst te klikken (d.w.z。Bekijken
海登),我们通过即使de链接的书css选择器kunnen aanduiden:
1
美元客户端- >点击(美元履带- >过滤器(“h4 + p”)- >链接());
Controleer de nieuwe测试groen是:
1
美元ob娱乐下载php bin / symfony /控制器/ ConferenceControllerTest.php phpunit)测试
即使formulier indienen甚至functionele测试
会我naar甚至猪水平?调查甚至nieuwe中遇到与活化脚趾te voegen op甚至conferentie甚至通过测试门het indienen van甚至formulier te simuleren。Dat lijkt ambitieus, nietwaar ?Kijk naar de benodigde代码:不行复杂丹窟我们al schreven:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
- - - /测试/控制器/ ConferenceControllerTest.php+ + + b /测试/控制器/ ConferenceControllerTest.php@@ -29,4 + 29日19 @@类ConferenceControllerTest延伸WebTestCase $ this - > assertSelectorTextContains (h2,阿姆斯特丹2019);$ this - > assertSelectorExists (“div:包含(“有1评论”));}++公共testCommentSubmission()函数+ {+ $客户=静态:createClient ();+ $客户- >请求(‘得到’,' /会议/阿姆斯特丹- 2019 ');+ $客户- > submitForm(“提交”,(作者)+ ' comment_form ' = > '法',+ ' comment_form[文本]' = > '一些反馈一个自动化的功能测试,(电子邮件)+ ' comment_form ' = >“me@automat.ed”,+ ' comment_form[图片]' = >目录名(__DIR__, 2)。“/公共/图片/ under-construction.gif”,+));+ $ this - > assertResponseRedirects ();+ $客户- > followRedirect ();+ $ this - > assertSelectorExists (“div:包含(有两个评论)');+}}
Om甚至formulier te dienen通过submitForm ()
,vind我德veldnamen通过de浏览器DevTools het Symfony分析器Form-panel。ob娱乐下载默克het slimme hergebruik van het在建plaatje op !
到德测试opnieuw外的om te controleren一切groen是:
1
美元ob娱乐下载php bin / symfony /控制器/ ConferenceControllerTest.php phpunit)测试
Als我德resultaten在浏览器甚至枯萎bekijken迪恩我德Web服务器te stoppen opnieuw te starten voor de测试
omgeving:
1 2
美元ob娱乐下载symfony服务器:停止美元APP_ENV =测试ob娱乐下载symfony服务器:开始- d
De fixture herladen
Als我德测试甚至tweede科尔uitvoert, zouden泽moeten mislukken。Aangezien erν米尔德数据库staan reacties,是德bewering van het aantal兰格geldig reacties不行。我们moeten de数据在数据库de tussen elke运行resetten门德fixture voor elke opnieuw te拉登运行:
1 2
美元ob娱乐下载symfony控制台学说:夹具:负载——env =测试美元ob娱乐下载php bin / symfony /控制器/ ConferenceControllerTest.php phpunit)测试
Jouw工作流automatiseren甚至Makefile
Het vervelend om甚至reeks突击队的te moeten onthouden bij Het uitvoeren van de测试。说酩悦minstens沃顿gedocumenteerd。低平火山口documentatie酩悦甚至laatste redmiddel zijn。Kunnen我们德日常handelingen automatiseren吗?Dat邹kunnen dienen als documentatie,安德利果汁ontwikkelaars helpen om了te terug te vinden en vergemakkelijkt en versnelt het ontwikkelen。
Het gebruik van甚至Makefile
甚至许多om突击队的te automatiseren:
警告
德indentatie甚至Makerfile regel酩悦轩尼诗
bestaan外的甚至enkel标签karakter en不行外的spaties。
默克德- n
optie op bij het原则,突击队员;het甚至整体参数op Symfony突击队,死泽niet-inob娱乐下载teractief maakt。
Wanneer我德测试必uitvoeren gebruik丹做测试
:
1
美元做测试
数据库resetten na elke测试
Het resetten van de数据库na elke测试leuk,低平火山口Het是钉打赌om真正的te hebben onafhankelijke测试。我们willen不行dat甚至测试afhankelijk van de resultaten van de vorige。Het wijzigen van de volgorde mag de uitkomst不行veranderen van de测试。我们Zoalsνontdekken,服务员是dat op说不行het geval时刻。
Verplaats德testConferencePage
测试na德testCommentSubmission
测试:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
- - - /测试/控制器/ ConferenceControllerTest.php+ + + b /测试/控制器/ ConferenceControllerTest.php@@ -15 21 + 15 6 @@类ConferenceControllerTest延伸WebTestCase $ this - > assertSelectorTextContains (h2,给你反馈);}——公共testConferencePage()函数——{-客户=静态:美元:createClient ();-履带=美元客户- >请求(‘得到’,‘/’);- - - - - -- $ this - > assertCount(2 $履带- >过滤器(h4));- - - - - --客户- > clickLink(“视图”);- - - - - -- $ this - > assertPageTitleContains(阿姆斯特丹);- $ this - > assertResponseIsSuccessful ();- $ this - > assertSelectorTextContains (h2,阿姆斯特丹2019);- $ this - > assertSelectorExists (“div:包含(“有1评论”)');- - - - - -}- - - - - -公共函数testCommentSubmission(){$客户=静态:createClient ();@@ -44,4 + 29日19 @@类ConferenceControllerTest延伸WebTestCase $客户- > followRedirect ();$ this - > assertSelectorExists (“div:包含(有两个评论)');}++公共testConferencePage()函数+ {+ $客户=静态:createClient ();+ $履带= $客户- >请求(‘得到’,‘/’);++ $ this - > assertCount(2 $履带- >过滤器(h4));++ $客户- > clickLink(“视图”);++ $ this - > assertPageTitleContains(阿姆斯特丹);+ $ this - > assertResponseIsSuccessful ();+ $ this - > assertSelectorTextContains (h2,阿姆斯特丹2019);+ $ this - > assertSelectorExists (“div:包含(“有1评论”));+}}
测试falen怒。
Om de数据库tussen de测试门te resetten段我德DoctrineTestBundle:
1
美元ob娱乐下载symfony作曲家配置extra.symfony.allow-contrib真正的
1
美元ob娱乐下载symfony作曲家要求“dama / doctrine-test-bundle: ^ 6”——开发
我酩悦het uitvoeren van de配方bevestigen (aangezien het geen“officieel”ondersteunde包):
1 2 3 4 5 6 7 8 9 10 11
ob娱乐下载Symfony操作:1配方(a5c79a9ff21bc3ae26d9bb25f1262ed7)——警告dama / doctrine-test-bundle(> = 4.0):从github.com/symfony/recipes-contrib:master这个包的秘诀来自“contrib”存储库,这是社区的贡献。欧宝体育平台怎么样检查配方在https://github.com/symfony/recipes-ob娱乐下载contrib/tree/master/dama/doctrine-test-bundle/4.0上你想执行这个配方吗?[y]是[n]不是[a]是的所有包,只有当前安装的会话[p]是永久的,不会又问这个项目(默认为n): p
活跃de PHPUnit)监听器:
1 2 3 4 5 6 7 8 9 10 11 12 13
- - - a / phpunit.xml.dist+ + + b / phpunit.xml.dist10 @@ @@ -29年6 + 29日< /包括> < /覆盖>+ <扩展>+ <扩展类= " DAMA \ DoctrineTestBundle \ PHPUnit) \ PHPUnitExtension " / >+ < /扩展>+<听众> <侦听器类= "桥Symfony \ \ Phpob娱乐下载Unit) \ SymfonyTestsListener " / > < /听众>
En klaar。Eventuele datawijzigingen gemaakt门河畔沃顿νhet einde van elke测试automatisch teruggedraaid。
德测试moeten我们groen zijn:
1
美元做测试
Gebruik van甚至echte浏览器voor functionele测试
Functionele测试这个gebruik van甚至speciale浏览器死de Symfony-laag rechtstrob娱乐下载eeks aanroept。低平火山口我kunt显得甚至echte浏览器en de echte HTTP-laag gebruiken dankzij Symfony豹:ob娱乐下载
1
美元ob娱乐下载symfony作曲家点播豹- dev
我菅直人丹测试schrijven死gebruik这个范甚至echte谷歌chrome浏览器门het这个范volgende wijzigingen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
- - - /测试/控制器/ ConferenceControllerTest.php+ + + b /测试/控制器/ ConferenceControllerTest.php13 @@ @@ 2 13 + 2名称空间应用\ \测试控制器;用Symfob娱乐下载ony \包\ FrameworkBundle \ \ WebTestCase测试;+使用Syob娱乐下载mfony \ \豹\ PantherTestCase组件;海尔集团ConferenceControllerTest WebTestCase延伸+类ConferenceControllerTest PantherTestCase延伸{公共职能testIndex () {-客户=静态:美元:createClient ();+ $客户=静态:createPantherClient ([' external_base_uri ' = > $ _SERVER [' SYMFob娱乐下载ONY_PROJECT_DEFAULT_ROUTE_URL ']]);$客户- >请求(‘得到’,‘/’);$ this - > assertResponseIsSuccessful ();
德ob娱乐下载SYMFONY_PROJECT_DEFAULT_ROUTE_URL
omgevingsvariabele bevat de URL van de lokale网络服务器。
Het Juiste Kiezen测试类型
我们hebben合计ν脚趾冲动verschillende gemaakt类型测试。-我们de制造商包enkel gebruikt hebben om om de te genereren单元测试类,zouden我们deze显得gebruikt kunnen hebben om de安德利果汁te genereren测试类:
1 2 3
美元ob娱乐下载symfony控制台:测试\ \ ConferenceController WebTestCase控制器美元ob娱乐下载symfony控制台:测试\ \ ConferenceController PantherTestCase控制器
De制造商包ondersteunt het genereren van De volgende测试类型,afhankelijk van锄我我我applicatie会testen:
TestCase
:基础PHPUnit) testen;KernelTestCase
:基础testen死toegang hebben合计Symfony服务;ob娱乐下载WebTestCase
:Om browser-achtige场景的te draaien低平火山口死uitvoeren geen JavaScript代码;ApiTestCase
:Om API-georienteerde场景外的te voeren;PantherTestCase
:Om e2e场景外的te voeren gebruik makend van甚至echte浏览器的HTTP客户端甚至echte web服务器。
黑盒functionele测试draaien遇到黑焰
即使安德利果汁很多om functionele测试外的te voeren是通过德黑焰的球员。Naast窟我菅直人testen遇到functionele测试,菅直人我显得性能测试uitvoeren。
利兹de堵塞了Prestatiesom海尔米尔te食用蓝花蕉。
佛得角服务员
- 断言死门Symfony gedefiniob娱乐下载eerd沃顿voor functionele testen;
- PHPUnit)文档;
- 德摊贩图书馆om realistische夹具数据te genereren;
- 德CssSelector组件documentatie;
- 德ob娱乐下载Symfony豹图书馆web爬行在Symfony applicaties voor浏览器测试:ob娱乐下载
- 德使/ Makefile documentatie。