我目前正在为我的新项目设置一个开发环境,我正在考虑一件事。我打算使用Yii。我想让功能测试自动化,我已经有了gerrit和Jenkins,工作。
我读了this note并发现selenium有类似html套件的东西。我之前从未听说过,我总是编写我的测试来通过PHPUnit运行。我使用默认的Yii功能测试环境as described here。
所以我的问题是,这两种方法的优点和缺点是什么?我已经可以想到一个html套件的pro和con。 Pro是,编写测试非常简单 - 只需在Selenium IDE中“点击”它们即可。问题是,我可能不得不在测试之前运行数据库固件,我无法更改它们,或运行它们 - 加载夹具,运行测试,加载夹具,运行测试,但我想这将使测试更多更模糊。您如何看待/您在此方面的经历是什么?
答案 0 :(得分:2)
有一种简单的方法来编写功能测试。 您可以为selenium IDE下载一个插件,然后为此插件添加php formatter,您可以非常轻松地制作和导出功能测试。
然后你应该配置你的protected / config / test.php和protected / tests / bootstrap.php
你应该编辑protected / tests / phpunit.xml并删除除了fire fox之外的任何浏览器。
然后像Willem Renzema那样说并更改此插件所做的测试并将类的名称更改为WebTestCase并删除setUp()
然后你准备好进行测试了!
欢呼声
答案 1 :(得分:-1)
与Yii完美集成的两个软件包是PhPUnit和Selenium Remote Control。所以这两个在Yii开发者之间更常见。
关于部署功能测试,我不确定你想要多深,但就我用它而言,它非常简单。功能测试,实际上是php类,它们是从CWebTestCase扩展而来的。 Yii CWebTestCase class description
命名约定是您必须将类命名为以TestTest.php之类的Test结尾,并将文件存储在protected / tests / functional下。您需要设置所有内容,包括两个包,还要更改Yii配置文件和默认浏览器。如果一切顺利,样本测试可以是这样的:
class ExampleTest extends WebTestCase
{
public function testContact()
{
$this->open('?r=site/contact');
$this->assertTextPresent('A string on contact page');
$this->assertElementPresent('name=ContactForm[name]');
$this->type('name=ContactForm[name]','tester');
$this->type('name=ContactForm[email]','tester@example.com');
$this->type('name=ContactForm[subject]','test subject');
$this->click("//input[@value='Submit']");
$this->waitForTextPresent('Body cannot be blank.');
}
}
这就是我所知道的,我希望它有所帮助。