我有一个测试类,其中一个测试通过a @dataProvider和另一个测试@depends在第一个方法上运行多次.然而,当我呼吁var_dump应该传递给第二次测试时,它给了我一个坚实的NULL,我没想到.
换句话说:这应该做什么:
<?php
class DevicesTest extends PHPUnit_Framework_TestCase
{
/**
* @dataProvider registerDataProvider
*/
public function testRegister($device, $supposedResult)
{
//do a bunch of tests
return array($device, $supposedResult);
}
public function registerDataProvider()
{
return array(array("foo", "foo"));
}
/**
* @depends testRegister
*/
public function testSaveDevicePreferences($deviceArr)
{
$this->assertNotEmpty($deviceArr);
}
}
?>
Run Code Online (Sandbox Code Playgroud) 我想声明一个变量是phpunit中的一个(非空白)字符串,但我不想断言字符串必须匹配任何完全字符串.
例如,我想拉一个用户名,并确保我成功获得了一些非空白用户名,但我并不确切知道我的用户名.
我可以很容易断言它是一个非空变量,或者它是一个完全匹配某个字符串的字符串,或断言var是没有phpunit帮助的字符串:
$this->assertNotEmpty($username);
$this->assertSame('myusername', $username);
$this->assertTrue(is_string($username));
Run Code Online (Sandbox Code Playgroud)
这些都接近我所需要的,使用is_string实际上测试正确的条件,但是自己做is_string还不够好,因为当测试失败时我不能再得到有用的,信息丰富的消息了,而不是告诉我实际返回了什么类型的值,错误消息变得无用:
Failed asserting that false is true.
Run Code Online (Sandbox Code Playgroud)
那么如何使用phpunit的断言系统断言var是string类型和非空白?
我正在使用.编写Zend Framework 3应用程序的集成/数据库测试
3.1.0,6.2.2,和3.0.0我的测试由于失败而失败
Connect Error: SQLSTATE[HY000] [1040] Too many connections
Run Code Online (Sandbox Code Playgroud)
我设置了一些断点并查看了数据库:
SHOW STATUS WHERE `variable_name` = 'Threads_connected';
Run Code Online (Sandbox Code Playgroud)
我实际上已经看到了100打开的连接.
我通过断开连接来减少它们tearDown():
protected function tearDown()
{
parent::tearDown();
if ($this->dbAdapter && $this->dbAdapter instanceof Adapter) {
$this->dbAdapter->getDriver()->getConnection()->disconnect();
}
}
Run Code Online (Sandbox Code Playgroud)
但我仍然有过度80开放的联系.
如何将测试中的数据库连接数减少到可能的最小值?
更多信息
(1)我有很多测试,其中我dispatch是一个URI.每个此类请求都会导致至少一个数据库请求,从而导致新的数据库连接.这些连接似乎没有关闭.这可能会导致最多的连接.(但是我还没有找到一种方法让应用程序在处理请求后关闭连接.)
(2)其中一个问题可能是我对数据库的测试:
protected function retrieveActualData($table, $idColumn, $idValue)
{
$sql = new Sql($this->dbAdapter);
$select = $sql->select($table);
$select->where([$table . '.' . $idColumn . ' = ?' => …Run Code Online (Sandbox Code Playgroud) 我最近升级到 PHPUnit 9.5.20,并注意到#StandWithUkraine每次测试运行都会打印。例如。
Testing started at 10:01 am ...
Running in local mode
PHPUnit 9.5.20 #StandWithUkraine
Time: 00:01.141, Memory: 24.00 MB
OK (1 test, 4 assertions)
Run Code Online (Sandbox Code Playgroud) 我目前正在使用Zend Framework与PHPUnit一起对应用程序进行单元测试.当Hudson执行PHPUnit shell命令时,在代码覆盖生成期间的某个时间达到最大PHP内存限制.我目前总共有41个测试,有334个断言.
通过使用-d memory_limit=768M开关将memory_limit设置提高到768M,我成功地消除了这个错误; 但是,我担心随着复杂性的增加以及测试/断言的总数,我将没有足够的内存来生成用于代码覆盖率统计的HTML.
操作系统: CentOS 5.5
控制面板: WHM/cPanel
CI服务器: Hudson
/usr/local/bin/phpunit
--verbose
-d memory_limit=512M
--log-junit ../../build/logs/phpunit.xml
--coverage-clover ../../build/logs/coverage/clover.xml
--coverage-html ../../build/logs/coverage-html/
Run Code Online (Sandbox Code Playgroud)
致命错误:允许的内存大小为536870912字节
在提交我的更改并让Hudson处理其余的更改之前,我使用Windows 7进行开发.在W7中运行相同的命令时,内存使用率从未超过340MB.
我正在开发我的第一个项目,我正在利用PHPUnit进行单元测试.事情一直在顺利进行; 但是,我已经开始使用最近的测试得到以下输出:
................................................................. 65 / 76 ( 85%)
...........
Time: 1 second, Memory: 30.50Mb
OK (76 tests, 404 assertions)
Run Code Online (Sandbox Code Playgroud)
我找不到任何关于"65/76(85%)"的含义的信息.
有谁知道如何解释这个?
谢谢!
PHPUnit setUp()在运行特定测试之前运行测试类的方法.
我为测试类中的每个测试加载特定于测试的灯具,并且不希望明确地这样做.理想情况下,我希望在setUp()方法中自动处理这个问题.
如果该setUp()方法提供测试类名称和测试方法名称,则可以执行此操作.
是否可以在方法中使用测试类和方法的名称setUp()?
我正在尝试在Ubuntu 10.04中安装PHPUnit但我收到这些错误消息
sudo pear install -a pear.phpunit.de/PHPUnit
Duplicate package channel://pear.phpunit.de/File_Iterator-1.3.3 found
Duplicate package channel://pear.phpunit.de/File_Iterator-1.3.2 found
install failed
Run Code Online (Sandbox Code Playgroud)
我尝试重新安装PEAR,升级它; 更新了PEAR和PHPUnit通道; 清除了PEAR的缓存,但仍然没有运气,我不断得到同样的错误.
有没有人有同样的问题,知道如何解决它?
谢谢.
我正在尝试使用selenium 17.1(链接)从PHPUnit运行示例
我已完成所有安装但仍然失败.
我得到:
1) WebTest::testTitle
BadMethodCallException: The command http://localhost:4444/wd/hub/session/url is not recognized by the server.
Run Code Online (Sandbox Code Playgroud)
我没有改变任何例子.Selenium服务器正在运行.
我无法弄清楚出了什么问题.救命?
回答:
请参阅@ rutter的评论: 你知道你正在运行什么版本的PHPUnit_Selenium吗?报告自1.3.2(changelog,pull request)起固定. - 车辙
除此之外,该项目2周后再次开始工作.我认为简单的重新安装就是它所需要的一切.:)
我最近安装了laravel并在/ tests目录中编写了一些测试,但是当我phpunit在cmd中使用同一个文件夹phpunit.xml时,它说'phpunit' is not recognized as an internal or external command,operable program or batch file..我正在使用Windows 7.我该怎么办?