我有一个方法返回一个像1.234567890的浮点数.我想测试它确实这样做.但是,似乎这个返回的float在不同平台上具有不同的精度,那么如何断言返回值是1.23456789?如果我这样做:
$this->assertEqual(1.23456789, $float);
Run Code Online (Sandbox Code Playgroud)
那么在某些精度不够的平台上可能会失败.
有没有办法测试程序代码?我一直在看PHPUnit,这似乎是创建自动化测试的好方法.但是,它似乎面向面向对象的代码,是否有任何替代程序代码?
或者我应该在尝试测试网站之前将网站转换为面向对象?这可能需要一段时间,这是一个问题,因为我没有很多时间浪费.
谢谢,
丹尼尔.
当我试图在phpunit中运行testclass时,我收到此错误.
C:\xampp\htdocs\unittest>phpunit UnitTest usertest.php
PHP Warning: require_once(File/Iterator/Autoload.php): failed to open stream No such file or directory in C:\xampp\php\pear\PHPUnit\Autoload.php on line 45
PHP Stack trace:
PHP 1. {main}() C:\xampp\php\phpunit:0
PHP 2. require() C:\xampp\php\phpunit:41
Warning: require_once(File/Iterator/Autoload.php): failed to open stream: No such file or directory in C:\xampp\php\pear\PHPUnit\Autoload.php on line 45
Call Stack:
0.0004 325352 1. {main}() C:\xampp\php\phpunit:0
0.0026 366520 2. require('C:\xampp\php\pear\PHPUnit\Autoload.php')xampp\php\phpunit:41
PHP Fatal error: require_once(): Failed opening required 'File/Iterator/Autoload.php' (include_path='.;C:\php\pear') in C:\xampp\php\pear\PHPUnit\Autoload.php on line 45
PHP Stack trace:
PHP 1. {main}() C:\xampp\php\phpunit:0' …Run Code Online (Sandbox Code Playgroud) 如何创建扩展PHPUnit_Framework_TestCase的基类并将其用于子类化实际测试用例,而不需要PHPUnit对基类本身进行测试?
我有一系列相关的测试用例,我已经为其创建了一个基类,其中包含了所有测试用例都要继承的常见测试:
BaseClass_TestCase.php:
class BaseClass_TestCase extends PHPUnit_Framework_TestCase {
function test_common() {
// Test that should be run for all derived test cases
}
}
MyTestCase1Test.php:
include 'BaseClass_TestCase.php';
class MyTestCase1 extends BaseClass_TestCase {
function setUp() {
// Setting up
}
function test_this() {
// Test particular to MyTestCase1
}
}
MyTestCase2Test.php:
include 'BaseClass_TestCase.php';
class MyTestCase2 extends BaseClass_TestCase {
function setUp() {
// Setting up
}
function test_this() {
// Test particular to MyTestCase2
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我尝试在文件夹中运行所有测试时,它会失败(没有输出).
试图调试我发现问题在于基类本身是PHPUnit_Framework_TestCase的子类,因此PHPUnit也会尝试运行它的测试.(在那之前,我天真地认为只有在实际测试文件中定义的类 - 以Test.php结尾的文件名 …
出于某种原因,当我发送一个新的$ client->请求时,我指定的标头会丢失:
public function testGetClientsAction()
{
$client = static::createClient();
$cookie = new Cookie('locale2', 'en', time() + 3600 * 24 * 7, '/', null, false, false);
$client->getCookieJar()->set($cookie);
// Visit user login page and login
$crawler = $client->request('GET', '/login');
$form = $crawler->selectButton('login')->form();
$crawler = $client->submit($form, array('_username' => 'greg', '_password' => 'greg'));
$client->request(
'GET',
'/clients',
array(),
array(),
array('X-Requested-With' => 'XMLHttpRequest', 'accept' => 'application/json')
);
print_r($client->getResponse());
die();
Run Code Online (Sandbox Code Playgroud)
}
在正在测试的方法中,我在第一行有这个:
print_r($request->headers->all());
Run Code Online (Sandbox Code Playgroud)
答复如下:
Array
(
[host] => Array
(
[0] => localhost
)
[user-agent] => Array …Run Code Online (Sandbox Code Playgroud) 我在PhpStorm中运行测试,我收到此错误.有谁知道究竟是什么导致它?
PHP致命错误:第249行的C:\ Users\administrator1\AppData\Local\Temp\ide-phpunit.php中找不到类'PHPUnit_TextUI_ResultPrinter'
我在其他项目中运行测试 - 它们也可以使用ide-phpunit.php并运行得很好.
我已经使用 phpunit 运行了我的 laravel 应用程序。一切都很好,直到在某个时候我再次运行测试时出现此错误。
Illuminate\Database\QueryException: could not find driver (SQL: PRAGMA foreign_keys = ON;)
Run Code Online (Sandbox Code Playgroud)
Caused by
PDOException: could not find driver
Run Code Online (Sandbox Code Playgroud)
这是我的 phpunit.xml 文件:
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="./vendor/phpunit/phpunit/phpunit.xsd"
bootstrap="vendor/autoload.php"
colors="true">
<testsuites>
<testsuite name="Unit">
<directory suffix="Test.php">./tests/Unit</directory>
</testsuite>
<testsuite name="Feature">
<directory suffix="Test.php">./tests/Feature</directory>
</testsuite>
</testsuites>
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">./app</directory>
</whitelist>
</filter>
<php>
<server name="APP_ENV" value="testing"/>
<server name="BCRYPT_ROUNDS" value="4"/>
<server name="CACHE_DRIVER" value="array"/>
<server name="DB_CONNECTION" value="sqlite"/>
<server name="DB_DATABASE" value=":memory:"/>
<server name="MAIL_MAILER" value="array"/>
<server name="QUEUE_CONNECTION" value="sync"/>
<server name="SESSION_DRIVER" value="array"/>
<server name="TELESCOPE_ENABLED" value="false"/>
</php>
Run Code Online (Sandbox Code Playgroud)
OS: Windows …Run Code Online (Sandbox Code Playgroud) 我已将 PHPUnit 包含在测试普通 PHP 项目中,当我开始测试时,vendor/bin/phpunit我收到以下错误消息:
Your XML configuration validates against a deprecated schema. Migrate your XML configuration using "--migrate-configuration"!
问题:此错误消息意味着什么以及我必须采取什么措施才能避免它?
我的 phpunit.xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="./vendor/phpunit/phpunit/phpunit.xsd"
bootstrap="vendor/autoload.php"
colors="true"
verbose="true"
stopOnFailure="true"
>
<testsuites>
<testsuite name="Unit">
<directory suffix="Test.php">./tests/Unit</directory>
</testsuite>
</testsuites>
</phpunit>
Run Code Online (Sandbox Code Playgroud)
我使用 phpunit 10
"require-dev": {
"phpunit/phpunit": "^10.0"
}
Run Code Online (Sandbox Code Playgroud) 我需要做的一些测试需要将已知数组与我将要运行的函数得到的结果进行比较.
用于递归地比较数组:
我正在使用引导程序文件运行PHPUnit,用于自动加载类(由composer生成).
我的所有测试都很好地加载了类,但是对于我的两个测试,我创建了一个"基础"测试类,它扩展了PHPUnit_Framework_TestCase,然后是两个扩展基类的测试类,类似于以下示例代码的结构:
abstract class BaseTest extends PHPUnit_Framework_TestCase
{
abstract function setUp();
protected function getCommonTestVariables()
{
// ...
}
protected function runCommonTests()
{
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
class BlahBlahTest extends BaseTest
{
public function setUp()
{
$variables=$this->getCommonTestVariables();
//etc...
}
public function testThings()
{
$this->runCommonTests();
}
}
Run Code Online (Sandbox Code Playgroud)
每当我运行它时,PHPUnit都会出错:
致命错误:第13行的BlahBlahTest.php中找不到类'BaseTest'
我检查了文件名,位置,名称空间,一切似乎都是有序的.任何帮助将被理解为深究这一点
phpunit ×10
php ×7
unit-testing ×5
assert ×1
base-class ×1
laragon ×1
laravel ×1
phpstorm ×1
precision ×1
procedural ×1
recursion ×1
subclassing ×1
symfony ×1
testing ×1