可能重复:
简单测试与PHPunit
我是软件开发方面的新手.我需要知道我应该使用女巫测试单元框架.我看到有些人使用PHPUnit而其他人使用SimpleTest.我应该为初学者选择什么样的套餐?
最好的祝福,
如果我是正确的,SimpleTest将允许您断言抛出PHP错误.但是,根据文档,我无法弄清楚如何使用它.我想声明我传递给构造函数的对象是一个实例MyOtherObject
class Object {
public function __construct(MyOtherObject $object) {
//do something with $object
}
}
//...and in my test I have...
public function testConstruct_ExpectsAnInstanceOfMyOtherObject() {
$notAnObject = 'foobar';
$object = new Object($notAnObject);
$this->expectError($object);
}
Run Code Online (Sandbox Code Playgroud)
我哪里错了?
我正在使用SimpleTest,一个基于PHP的单元测试框架.我正在测试新代码,它将处理从数据库中存储和检索网站注释.我对如何构建项目来测试数据库访问代码感到茫然.
我正在寻找有关在PHP应用程序中测试db代码的最佳实践的任何建议.例子真的很棒.进一步阅读的网站很棒.
非常感谢你.:)
已经尝试了相当一段时间才能使其正常工作但没有运气.基本上,我有Eclipse(3.3)与PHP开发工具(PDT),PDT XDebug插件以及SimpleTest eclipse插件.
我想要做的是调试SimpleTest单元测试调用的代码.SimpleTest显然可以看到XDebug,因为我可以生成代码覆盖率报告,但它不会在断点上停止.
编辑:应该添加XDebug和断点在eclipse中正常工作,而不是在SimpleTest调用时
有没有人成功设置过这个?有很多guff文档,很少有用的信息.
谢谢!
我想测试登录功能,如果它正常工作,只允许有效和活跃的用户.
我的用户夹具包含:
array(
'password' => '*emptyPasswordHash*', // empty password
'username' => 'Lorem',
'balance' => 0,
'currency' => 'USD',
'id' => 1,
'user_group_id' => 3, //Customer
'active' => 1,
'hash' => 'LoremHash'
),
Run Code Online (Sandbox Code Playgroud)
我的测试函数如下所示:
function testLogin() {
//test valid login
$result = $this->testAction('/users/login', array(
'data' => array(
'User' => array(
'username' => 'Lorem',
'pass' => '',
'remember' => true
)),
'method' => 'post',
'return' => 'view'
));
debug($result);
Run Code Online (Sandbox Code Playgroud)
}
登录表单具有3个输入:username,password和remember
我已经设置$this->Auth->autoRedirect = false;了UsersController::beforeFilter …
我刚刚下载了Cake PHP 1.3,并将SimpleTest 1.0.1安装到vendor目录中.当我运行cake testsuite core时,我得到以下错误:
运行核心所有PHP致命错误: Cannot redeclare class Article in /Users/../cake/tests/cases/libs/model/models.php on line 283
如果我单独运行测试组或测试用例,其中许多都会失败.
这是一个干净的安装,除了基本配置设置(安全盐,cipherSeed和数据库配置)之外,我没有进行任何开发.
有没有其他人有问题,你做了什么来解决它?
我发现这个线程有完全相同的问题,但它没有解决,或者至少没有在该线程中发布解决方案.
我正在使用Simpletest作为我目前正在处理的PHP站点的单元测试框架.我喜欢它附带一个简单的HTML记者,但我想要一个更先进的记者.
我已经阅读了记者的API文档,但是能够使用现有的记者,而不是自己做,这将是很好的.
对于Simpletest,有没有好的扩展HTML报告器或GUI?
关于PHPUnit的GUI的提示也将受到赞赏,但我的主要关注点是Simpletest,对于这个项目.我尝试过Cool PHPUnit Test Runner,但不相信.
我正在使用SimpleTest 1.0.1用CakePHP(刚刚发布的1.2.4)编写一个新的应用程序.我已经阅读了Cookbook的相关章节,在Bakery上搜索过,并阅读了Mark Story关于控制器测试的帖子(艰难的方式和模拟).
不幸的是,这些都没有涉及非平凡控制器的实际测试.许多应用程序将网站的区域置于登录后面,但我无法弄清楚如何测试以下简单方案:
下面的控制器和测试不能像我想象的那样工作.两个断言都失败了,我也得到一个PHP错误:
在[.../app/tests/cases/controllers/users_controller.test.php第79行]中,FAILED [NULL]不应该为空... .../app/tests/cases/controllers/users_controller.test.php - > UsersControllerTest - > testLogin
FAILED等于期望失败,因为[NULL]与[.../app/tests/cases/controllers/users_controller.test.php第80行]中的[Integer:1]不匹配.../app/tests/cases/controllers/users_controller.test.php - > UsersControllerTest - > testLogin
ERROR意外PHP错误[未定义索引:操作]严重性[E_NOTICE]在[.../cake/libs/controller/components/auth.php第266行] .../app/tests/cases/controllers/users_controller.test中. php - > UsersControllerTest - > testLogin
这是控制器(烘焙加Mark Story的"硬路"测试方法):
class UsersController extends AppController
{
var $name = 'Users';
var $helpers = array('Html', 'Form');
var $components = array('Auth');
function login()
{
}
function logout()
{
$this->redirect($this->Auth->logout());
}
function index()
{
$this->set('users', $this->paginate());
}
function view($id = null) …Run Code Online (Sandbox Code Playgroud) 这是我的单元测试课程
<?
require_once '../simpletest/unit_tester.php';
require_once '../simpletest/reporter.php';
class Academic extends UnitTestCase
{
function setUp()
{
}
function tearDown()
{
}
function testAc1()
{
}
function testAc4()
{
}
function testAc7()
{
}
}
$test = new Academic();
$test->run(new HtmlReporter());
?>
Run Code Online (Sandbox Code Playgroud)
当我运行此脚本时,运行所有方法,即testAc1,testAc4,testAc7等.有没有办法只执行一个方法?
谢谢,Shikhar
使用DrupalUnitTestCase单元测试一个Drupal模块,失败.我可能会忘记一些事情
测试运行良好,直到我创建一个类的实例:
$foo = new FooBar();
Run Code Online (Sandbox Code Playgroud)
在这种情况下,Drupal决定做一些魔法并尝试调用数据库,以便在其注册表中找到一些文件.
Test PDOStatement->execute() failed: <em class="placeholder">PDOException</em>: SQLSTATE[42S02]: Base table [error]
or view not found: 1146 Table 'td_development.simpletest50921registry' doesn't exist: SELECT
filename FROM {registry} WHERE name = :name AND type = :type; Array
(
[:name] => FooBar
[:type] => interface
)
Run Code Online (Sandbox Code Playgroud)
DrupalUnitTestCase,而不是DrupalWebTestCase设计数据库,而不是设计.所以这个失败的原因很明显.
但是,我不想让Drupal在数据库中查找我想要的是创建一些实例.如何避免Drupal在其注册表中查找文件?
simpletest ×10
php ×7
unit-testing ×5
cakephp ×2
cakephp-1.3 ×1
database ×1
debugging ×1
drupal ×1
eclipse ×1
fatal-error ×1
login ×1
phpunit ×1
tdd ×1
testing ×1
xdebug ×1