我正在寻找在KohanaPHP框架上对项目进行PHPUnit测试的最佳实践。Kohana有一个PHPUnit模块,由Ben Rogers、Chris Bandy、Isaiah DeRose Wilson、Jeremy Bush、Kiall Mac Innes和Sam Clark维护
您可以在下面找到该模块,并且可以找到和查看文档
以上链接现在是404。这看起来是一个新的去处——事实上,这篇文章看起来比官方文档/那个项目要好得多。官方的phpunit上有一张从09年开始开放的门票
请注意,我不是在单元测试中实例化代码,而是使用curl测试web服务操作,然后根据预期值断言实际结果。我的测试没有问题。我只是想用一种方法来说明这个类包含在PHPUnderControl的“CodeCoverage”中。我尝试了@covers——它只是将类放在类的代码覆盖率列表中,但将代码覆盖率设置为0,从而降低了我的总体覆盖率。我想知道是否有一种方法可以明确指出单元测试应该覆盖类中的几个方法 用@cover标记测试告诉PHPUnit在测试期间使用xdebug跟踪该区域的代码覆盖率。它没有说明该
有没有办法从phpUnit测试中获取propper日志?在帮助手册中有几个选项
--log-junit <file> Log test execution in JUnit XML format to file.
--log-tap <file> Log test execution in TAP format to file.
--log-json <file> Log test execution
我正在学习单元测试,并试图解决以下问题:
Zend\ServiceManager\ServiceManager::get was unable to fetch or create an instance for zfcUserAuthentication
。。。使用以下给出的唯一答案:
所以我的设置函数看起来是一样的。不幸的是,我收到了错误消息:
Zend\Mvc\Exception\InvalidPluginException: Plugin of type Mock_ZfcUserAu
我使用typo36.1
我实际上试着用phpunit测试一个方法,它使用注入的存储库
$mock = $this->getMockedRepository(
'\\MyExt\\Domain\\Repository\\MyRepository',
array(
'findByUid' => array('count' => 0, 'return' => array()),
)
);
$this->tokenHelperObj-
我已经使用pear安装了phpunit版本3.5.6,并使用
pear安装——alldeps phpunit/phpunit运行正常
当我从命令行(例如(phpunit fleet.php)运行phpunit时,它会产生一个致命错误,并且无法打开所需的文件(请参见下面的示例输出图像)
我已经使用get_include_path检查了include_路径,输出如下。
c:\PHP;c:\PHP\pear;c:\php\includes;c:\Inetpub\Library
系统路径还包含c:\ph
我是PhpUnit的新手,我对编写测试的最佳实践有些怀疑
我的第一个测试如下:
<?php
require_once '../Scrap.php';
class ScrapTest extends PHPUnit_Framework_TestCase
{
protected $scrap;
// Setup function to instantiate de object to $this->scrap
protected function setU
我按照PHPUnit手册的示例4.5编写了一个DataTest用例,url是:
我正在测试一个长网页中是否存在字符串。使用PHPUnit的assertRegExp,如果没有找到字符串,它将打印出整个页面,然后以匹配PCRE模式“/xxxxxx/”结束,根据I,应该能够指定第三条消息,如果测试失败,将打印出第三条消息。将打印该消息,然后是整页源。我想做的就是打印消息。在我以前的应用程序中使用Selenium时,我使用了assertTextPresent,它只会打印出文本被/没有找到的确认信息,而不会填充我的屏幕。
我曾尝试将assertRegExp包装在一个try catch
我在Selenium IDE上使用sendKeys命令编写测试,这很好。但是当我改为PHPUnit Selenium时,我得到了一个错误,即方法sendKeys未定义,所以我想知道PHPUnit Selenium是否不支持,或者我需要添加一个方法?如果答案是我需要添加senKeys方法,如果是这样,让我知道如何添加senKeys方法。我也有一段时间想不出这个方法了。。。诀窍在于它不被称为sendKeys,并且在PHPUnit中不使用{ENTER}和Selenium。这些不是您正在寻找的功能
相反
我想为我的系统配置不同的PHPUnit配置文件
单元测试:没有可用的数据库,没有缓存,没有一切
集成测试:一切都在那里
及
能够在PhpStorm中执行这些测试,所有这些测试都可以在PhpStorm中一起执行,也可以在每个文件中以正确的配置自动执行
有几个机会并不适用于所有需求:
选项1:
多个phpunit.xml文件
在PhpStorm中,只能设置一个PHPUnit默认配置,对于执行单个测试文件,这将不起作用
选项2:使用PHPUnit\u框架\u BaseTestListener::sta
在我的项目中,我有一个带有白名单的PHPUnit配置,用于我的代码覆盖率,也排除了一些目录。当使用此配置执行PHPUnit并输出代码覆盖率时,我只获得代码覆盖率中的白名单文件
当我在PhpStorm中执行相同操作时,它会显示所有文件的代码覆盖率,而不仅仅是白名单上的文件
我的PHPUnit配置示例如下:
<filter>
<whitelist addUncoveredFilesFromWhitelist="true">
<directory
标签: Phpunit
php-7laravel-5.5php-7.1php-7.2
如果我使用PHP7.2或PHP7.1运行测试,它们的速度大约是使用PHP7.0运行测试的3倍。究竟有没有办法弄清为什么会发生这种情况
即使我单独运行测试套件(功能部件和单元),我仍然会看到速度变慢。只有当我单独运行测试时,速度差才会变得微不足道
我使用的是Laravel 5.5.20和Laravel Homestead 7.0.1。我有47个相当简单的测试,一些命中数据库,另一些只是简单的断言;因此,没有任何东西需要花费时间
我安装的目的是查看哪些测试花费的时间最长,以便删除这些测试,但没有一个
我创建了一个php库,通过正则表达式解析内容。其中一个正则表达式是'#\n-{3,}#'来解析--,只在前面加一个换行符
我还用PHPUnit编写了所有方法的测试,并且使用新行regex的测试总是失败。我总是和你一起测试
我尝试将以下字符串设置为输入:
$input=PHP_EOL'--'
$input='--'
$input='1!'
---'; // 带中断代码
正如预期的那样,我设定:
”
然而,它总是失败,并得到一个错误。如果我将此变量发送到断言检查,它将失败,并且不会解析新行。只有
当测试失败时,我想运行一个函数(在数据库中搜索某个字符串,然后在一堆文件中搜索该字符串)并输出结果——这可能吗
对于上下文,测试在数据库中搜索两列。当它失败时,我想知道该字符串是否出现在其中一列中,我还想在文件中搜索该字符串。您可以在。AfterTestFailureHook就是您要查找的。您可以覆盖PHPUnit\Framework\TestCase::onNotSuccessfulTest(Throwable$t)。此方法在测试失败后调用。不过,不要忘记调用parent::onNotSucc
在我的测试中,我使用assertSee()
$message='Header';
$response=$this->get($url);
$response->assertStatus(200);
$response->assertSee($message);
问题是当$message包含html实体时,断言将变为false
我知道有一个e()助手可以在$message中转换html实体,但现在我需要相反的方法
我该怎么做呢?->assertSee(…)在Laravel 7中,现在它有了第二个
我有两个控制器。它们的第一个路径是controller/news.php,第二个路径是controller/admin/news.php。我有每个控制器的路由
对于controller/admin/news.php,我有
Route::set('news-admin', 'admin/news(/)', array('start' => '\d+'))
->defaults(array(
'directory' => 'admin',
'
当我运行yii2单元测试时,我得到以下错误
致命错误:未找到类“frontend\tests\unit\PHPUnit\u Framework\u TestCase”是否包含类PHPUnit\u Framework\u TestCase?感谢Jithesh的快速回复。我已经包含了TestCase类,它工作得很好,但是当名称空间包含在其中时,它显示了上面的错误?默认情况下是否不包括此项?
在PHPUnit数据提供程序中是否有一种符合phpdoc的方式*来表示各种返回值
例如:
return array(
array(false, 17, array(1,2)),
array(true, 19, array(1,2)),
);
我想写一些比返回数组更详细的东西,它表示传递给测试方法的第一个值是bool,第二个是整数,第三个是数组(以及这些值各自代表的内容)
*如果没有兼容的方法,是否有人有关于如何以清晰的方式记录文档的提示?阵列的唯一进一步规范是它们包含的内容(如
laravel 5中登录验证phpunit测试用例的过程是什么
$credentials=[
'email'=>'admin@admin.com',
'password'=>'admin'
];
$response=$this->call('POST','login',$credentials);
$this->assertTrue($response->isOk());
这个测试只会检查用户是否存在并能够登录,但是我不明白为什么我们需要这个测试:
$th
我试图在Sublime Text 3中使用SimplePhunit包,但当我发出run命令时,它只返回并且总是返回:
[Finished in 0.4s with exit code 1]
[cmd: phpunit --stderr]
[dir: C:\Apache24\htdocs]
[path: ...]
phpunit.xml:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit
colors="true"
st
我在laravel 5.5中使用phpunit
当我使用
vendor/bin/phpunit .
它显示了错误
no tests excucted.
在phpunit.xml文件中,我设置了测试目录的后缀
但是我不知道问题出在哪里。你能分享你工作的更多细节吗?如果您是新来拉威尔的,可以遵循:。有一个循序渐进的指导方针我解决了这个问题
解决方案如下所示:
我写这篇文章是为了防止来自拉威尔8号的人发现类似的错误
今天我学习了TDD,并在Youtube上学习了一个教程。在一个阶段中,我创建了一个
我想测试我的应用程序是否记录了致命错误
PHP Fatal error: Allowed memory size exhausted
到我的独白处理程序文件。我想为此编写一个集成测试。
问题是,当我触发错误时,PHPUnit将停止
/**
* @return void
*/
public function testMemoryLimitExhaustedLogToMonolog(): void
{
// set memory limit 100mb
ini_set('me
我正在尝试为我的行类编写测试用例,但我真的不知道该怎么做
例如,我看到许多示例使用model和table
这个案例根本不使用Row,这个模型完全是关于getter和setter的。我不想重写Zend_Db_Table_行可以自动完成的事情
我的行类是从Zend_Db_Table_行扩展而来的,我认为没有必要编写像getter和setter这样的测试用例
我的大多数row课程如下
class App_Table_Row_User extends Zend_Db_Table_Row_Abstract
我有一个有趣(但最终无害)的问题:PHPUnit将报告没有执行任何测试,然后继续读取配置文件并运行测试,给出如下输出
看来PHPUnit正在退出,然后出于某种原因恢复。我查看了引导过程和日志文件,没有看到任何会导致PHPUnit退出的内容(异常或exit语句等)
使用PHPUnit-phar:php../PHPUnit.phar-c PHPUnit.xml从tests目录运行测试
以前有人见过这种行为吗?问题出在哪里?归根结底,这一点都不有害,我只是好奇到底发生了什么
PHPUnit 3.7.3
我目前正在使用github提供的以下软件包制作sublime text 3,并收到错误消息
Github包
错误此版本的PHPUnit需要PHP5.6;强烈建议使用最新版本的PHP。
[在0.1s内完成]
PHP 7.0.2 (cli) (built: Jan 8 2016 10:14:20) ( NTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Techno
我正在使用PhpStorm 2018.1.5,我想用两个不同的解释器设置测试配置
原因是我需要一个启用了xdebug的配置来运行代码覆盖率报告,另一个没有xdebug的配置来运行没有覆盖率的普通测试
我当前的配置如下所示:
口译员的定义如下:
和我的调试配置:
似乎无法选择要用于测试配置的解释器
我是否遗漏了某些内容或当前不支持这些内容?确实,没有办法为运行/调试配置选择本地解释器-请投票支持
就目前而言,有一个选项可以启用Xdebug随需应变,这看起来是一个完美的解决方案。有关更多详细信息,请
测试无法连接到您的webdriver实例。更多
信息读取核心/tests/README.md
启动Mink时的原始消息:无法打开连接:
http POST到的卷曲错误
http://localhost:4444/wd/hub/session 使用参数:
{“desiredCapabilities”:{“browserName”:“chrome”,“name”:“Behat”
测试,“色度选项”:{“w3c”:false}}}
无法连接到本地主机端口4444:连接被拒绝
/var/www/html
我正在努力让PHPUnit测试与ZF2一起工作
我的目录结构如下所示
project
- src
- config, data, module, public, vendor
- init_autoloader.php
- test
- bootstrap.php
- SimpleTest.php
putenv('ZF2=../src/vendor/zendframework/zendframework/library');
$loader = include '../src/
我是使用本教程创建测试的。所有这些都很好,但我只能在Firefox上启动这个测试。我在网上读了很多关于这方面的文章,但我没有找到任何解决办法。我有塞巴斯蒂安·伯格曼的WindowsXP、PHP5.4.7和PHPUnit3.7.13。在运行测试之前,我启动了selenium-server-standalone-2.28.0.jar。这是我的测验
<?php
class Example extends PHPUnit_Extensions_Selenium2TestCase
{ prote
失败:
public function test1()
{
$this->url('http://www.yahoo.com');
$this->closeWindow();
$this->url('http://www.google.com');
}
通过:
public function test1()
{
$this->url('http://www.yahoo.com');
更改代码后,我经常运行phpunit
而且,我总是很难通过单击鼠标右键并选择Runphpunit来运行phpunit
有没有更快的方法运行它
提前感谢。您需要创建所谓的构建系统-这样您可以点击⌘+B(或windows上的Ctrl键),它将运行它
这样做可以:
关于如何定制构建系统
当我运行覆盖率为的PHPUnit套件时,我会在生成的HTML中得到:
Legend
Low: 0% to 50% Medium: 50% to 90% High: 90% to 100%
Generated by PHP_CodeCoverage 2.0.13 using PHP 5.5.9-1ubuntu4.5 and PHPUnit 4.4.0 at Sun Dec 21 20:21:31 UTC 2014.
50%和90%的“切换点”是否可配置(因此我可以分别更改为35%和75%)?
最近我看到一些关于我的项目的问题,发现有一些例外,我忘记捕捉它们!这是我的代码:
try {
$this->user = $invoiceEvent->user;
$this->invoice = $invoiceEvent->invoice;
if ($this->user->email) {
$this->sendEmail();
}
}catch (Swift_RfcComplianceExcep
我正在尝试在我的windows pc中安装PHPUnit。如果我执行PHPUnit-version,那么我将获得Sebastian Bergmann的输出PHPUnit 3.7.21。,但如果我尝试执行PHPUnit,那么我将得到以下错误
PHP Fatal error: Uncaught Error: Call to undefined method PHPUnit_Util_Configuration::getTestdoxGroupConfiguration() in D:\php7\h
我有一个网站,允许人们使用信用卡注册订阅服务,我正在通过他们的“自己的表单”解决方案处理该服务-
它正在工作,但我需要编写PHPUnit测试,我不知道如何正确模拟正在提交的表单,因为它依赖javascript将许多安全表单元素转换为$_POST[token]项
有人可以帮助您演示如何为此编写测试吗?通常,您不会在单元测试中测试他们的服务或任何相关内容。这将是一个集成测试
您应该从外部api封装您的代码,并使用存根和驱动程序来模拟它们的形式与您的代码进行通信
我使用PHP8.0.5、PHPUnit 9.5.4、PHPStorm 2021.1.2。
在XML配置文件中,我使用以下命令:
(这只是我文件的相关部分)
…并从PHPStorm启动命令“运行时覆盖”,它不会生成覆盖率报告
我已经停用了XDebug。PHPStorm向我展示了:
警告:必须设置XDEBUG_MODE=coverage或XDEBUG.MODE=coverage
我不知道为什么它会提到XDebug,因为我想使用pcov,因为我在“Run/Debug Configurations”
我正在尝试构建url并将其传递给您应该尝试正确命名变量-PHP中的变量名中不允许使用此选项
参考:
引述:
PHP中的变量由美元符号表示,后跟变量名称。变量名区分大小写
变量名遵循与PHP中其他标签相同的规则。有效的变量名以字母或下划线开头,后跟任意数量的字母、数字或下划线。作为正则表达式,它可以这样表示:“[a-zA-Z\ux7F-\xff][a-zA-Z0-9\ux7F-\xff]*”
您应该尝试正确命名变量-在PHP的变量名中不允许使用
参考:
引述:
PHP中的变量由美元符号表示,后
如果$docSrc如下所示,则此代码非常有效:
$domDoc = new DOMDocument();
$domDoc->loadHTML($docSrc);
$xpath = new DOMXPath($domDoc);
$nodeList = $xpath->query("//a[@class='active' and @href='/advanced-2-0.html']");
$this->assertTrue($nodeList->length == 1);
我正在尝试编写一个可测试的Laravel4应用程序。在Taylor Otwells关于Laravel的书中,他写道,我们应该考虑在验证命名空间内创建UpRealValueC类,并将验证器注入到您的存储库中。请提供控制器、存储库和测试中的代码示例。如果用户输入不满意,我是否应该在存储库中抛出验证异常,并在控制器中捕获错误 就个人而言,我更喜欢直接在模型中进行验证。也就是说,对于每个模型,我都有一个getValidator()方法,如下所示:
class User extends Eloquent
我是第一次测试PHPUnit。我想在表单上输入值。但是“name”属性的值是前缀,带有uniqid()…因此我找不到输入字段…以下是表单:
<input type="text" id="s5629e61aaa5fa_titre" name="s5629e61aaa5fa[titre]" required="required" class=" form-control">
对于Sonatadmin和symfony功能测试:
$form = $crawler->filter('f
有没有办法为块内的X个断言设置错误消息?我正在尝试提供更有意义的错误消息,目前我的测试代码中有一部分如下所示:
$helperString = 'testInsert() @ test conflicting reasonid';
$this->assertEquals(..., ..., $helperString);
$this->assertEquals(..., ..., $helperString);
$this->assertEqua
我正在编写针对以下类的测试:
abstract class EmailMessageRecipient
{
private $_address = null;
public function setAddress($address)
{
$this->_address = $address;
return $this;
}
public function getAddress()
{
ret
我有以下代码:
private function registerShutdownFunction(): void
{
register_shutdown_function(function () {
$this->dropDatabasesAndUsersIfExist();
});
}
该代码:
private function dropDatabasesAndUsersIfExist(): void
{
// some code for de
我在使用phpunit9.4为CakePHP4.1项目设置fixture侦听器时遇到问题
我在phpunit.xml.dist中添加了xml:
<!-- Setup a listener for fixtures -->
<listeners>
<listener class="Cake\TestSuite\Fixture\FixtureInjector">
<arguments>
在下面的代码中,testFunctionA输出true,而testFunctionB输出null。这是一个已知错误吗?我可以在不清除@depends标志的情况下绕过它吗
public function testFunctionA( $x = true ) {
var_dump( $x ); // outputs true
}
/*
* @depends testFunctionA
*/
public function testFunctionB( $y = true ) {
var_d
我正在使用PHPUnit和seleniumwebdriver测试我的应用程序
我使用type命令测试一些输入类型
例如$this->type(“css=#input”,“type something”)
因此,我想知道它在PHPUnit Selenium Webdriver中有另一个命令,而不是类型。是的,您可以选择一个输入元素,并使用value()函数键入内容。
例如:
$password=$this->byCssSelector('input[name="LoginForm\[pass
有没有办法通过提供参数来创建testcases运行时?
测试用例的功能是相同的,只是名称和参数会有所不同
这里有一个例子
public function testGetGiftsGivenVideo() {
$fileName = 'get-gifts-given-video.json';
$filePath = $this->path . $fileName;
$this->accessToken = $this->coreAP
标签: Phpunit
codeceptionweb-api-testing
当使用REST模块和PhpBrowser驱动程序从codeception测试发出请求时,没有数据和文件通过Silex应用程序
// ApiTester $I
$I->wantTo('Submit files');
// prepare:
$data = ['key' => 'value'];
$files = [
'file_key' => 'path/to/file.doc',
'file2_key'
我正在以编程方式生成一些PHP代码,我想通过PHPUnit进行测试
代码根据测试用例的需要生成,然后保存在白名单文件夹中的php文件中
当PHPUnit完成运行时,文件将保留在该文件夹中,以便我可以检查它们的代码覆盖率
但是,在我的PHPUnit引导中,我清空了该文件夹,这样以前的PHPUnit执行就不会影响刚刚启动的执行的结果
<?xml version="1.0" encoding="UTF-8"?>
<phpunit
bootstrap="./test/boots
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 16 页