草庐IT

unit-testing

全部标签

PHP:如何制作可测试的静态方法

我决定制作自己的穷人ORM框架。由于我不知道该怎么做,所以我决定先开发再测试。Github.使其按照我想要的方式工作后,我意识到我的代码无法测试,因为查询类中的静态方法与BaseModel之间的紧密耦合。所以我想到了一些方法让它可以测试:让每个查询方法都接收一个连接对象:但这意味着当我尝试在BaseModel类中使用这些方法时,我仍然必须将连接对象与BaseModel紧密耦合。保持原样:这意味着在PHPUnit测试期间,我将不得不覆盖BaseModel。无论哪种方式,我都觉得自己做的事情不对。我相信有更好的方法可以完成这项工作,我需要你们的帮助。谢谢 最佳答

php - 单元测试和对象继承

我有一个关于“单元测试”和对象继承的问题。例如:我有一个扩展类B的类A。让我们假设这两个类的唯一区别是添加方法。在B类中,此添加方法略有扩展。现在我想为B类的add函数编写一个单元测试,但是由于parent::add调用,我对父类A有依赖性。在这种情况下,我不能模拟父类的add方法,所以结果测试将是一个集成测试,但如果我希望它成为一个单元测试?我不希望因为类A中的父方法而导致类B中方法添加的测试失败。在这种情况下,只有父方法的单元测试应该失败。classBexendsA{publicfunctionadd($item){parent::add($item);//dosomeadditi

PHPUnit:我如何模拟这个文件创建?

我想使用vfsstream模拟文件的创建classMyClass{publicfunctioncreateFile($dirPath){$name=time()."-RT";$file=$dirPath.'/'.$name.'.tmp';fopen($file,"w+");if(file_exists($file)){return$name.'.tmp';}else{return'';}}}但是当我尝试测试文件创建时:$filename=$myClass->createFile(vfsStream::url('/var/www/app/web/exported/folder'));我收

php - 如何对 Symfony Controller 进行单元测试

我正在尝试使用Codeception在测试工具中获取SymfonyController。每个方法开始如下:publicfunctionsaveAction(Request$request,$id){//Entitymanagement/**@varEntityManager$em*/$em=$this->getDoctrine()->getManager();/*Actualcodehere...*/}publicfunctionsubmitAction(Request$request,$id){//Entitymanagement/**@varEntityManager$em*/$e

php - 无法进行单元测试 : $_SESSION empties before each test is ran

我无法对我的代码进行单元测试。$_SESSION每次运行下一个测试时都会清除。当我运行testStartProductSession()时,我的对象将一些数据添加到$_SESSION变量。但是当我运行下一个测试方法(testSessionIdIsKept())时$_SESSION再次为空。看起来$_SESSION在单元测试时变成局部变量。我不知道还能做什么。请检查以下输出://session_start()onbootrap.php;classMC_Session_ProductTestextendsPHPUnit_Framework_TestCase{/***@returnMC_Se

php - 使用 OS X Lion 在 MAMP 上使用 codeception 和 phpunit

运行:MAMP2.0.5PHP5.3.6(与MAMP捆绑)MacOSXLion10.7.2我的目标是获得Codeception在我的MAMP项目中工作和使用的测试框架。我正在关注theinstructionshere关于如何安装它。Pear已安装并且工作正常。我可以使用这些命令安装Codeception:$pearchannel-discovercodeception.com/pear$pearinstallcodeception/Codeception安装后,当我尝试运行codecept命令时,出现以下错误:Warning:require_once(Codeception/autol

单独运行时,PHPUnit 报告同一测试的不同代码覆盖率百分比

首先,让我说我已经通过了Reaching100%CodeCoveragewithPHPUnitSO以及Howtoget100%CodeCoveragewithPHPUnitSO.我无法借助其中任何一个解决问题。我的问题是,与运行整个测试套件时相比,PHPUnit在单独运行时报告同一测试的不同代码覆盖率百分比。因此,当我使用phpunittest/src/artax/UsesRequestTraitTest仅运行有问题的特定测试时,我得到以下覆盖率:但是,如果我在未指定特定测试的情况下使用phpunit运行我的全套测试,我将收到同一文件的以下信息:这是测试的源代码:getObjectFo

PHPUnit 实时登录失败/错误

我最近运行了几千个phpunit测试。我使用--process-isolation选项,因此完成测试需要大约40分钟。有时在积极重构之后,许多测试开始失败(感谢上帝,我有测试!)。如果一个测试在测试套件中间失败,那么我必须再等20分钟才能看到它是什么测试和它的消息。如果没有中断整个过程,我会使用--stop-on-failure。基本上我正在寻找--log-on-failure选项。我正在寻找的正是在测试失败后而不是在所有其他测试完成后立即查看测试失败/错误消息的方法。但是其他测试执行的整个过程不应该被打断。记录到文件也足够了。我会感谢你的建议。编辑:我很高兴看到您的建议,我可以如何改

php - 如何使用 Ant 运行 PHPUnit 3.7?

我正在使用PHPUnit3.7并尝试使用ApacheAnt自动构建(和测试)我的项目。我已经通读了PHPUnit的文档,但找不到如何配置它以向Ant抛出错误。我当前的Ant任务如下所示(测试文件位于“tests”目录中):我编写了一个会失败的简单测试,并且ant测试任务在[exec]中显示失败,但构建标记为成功。如何配置Ant任务以便识别测试何时失败? 最佳答案 啊啊啊,原来是这样啊。failonerror="true"命令是我的friend。它现在很管用。 关于php-如何使用Ant运

php - 麻烦包括 PHPUnit

我想开始为我的代码编写测试,所以我使用以下命令安装了最新的PHPUnitwgethttp://pear.phpunit.de/get/phpunit.pharchmod+xphpunit.pharmvphpunit.phar/usr/local/bin/phpunithttp://phpunit.de/manual/3.8/en/installation.html然后我将/usr/local/bin添加到我的php.ini包含路径,如下所示include_path=".:/Applications/MAMP/bin/php/php5.4.10/lib/php:/usr/local/bi