20

我目前正在为我的新项目建立一个开发环境,我正在努力思考一件事。我打算使用 Yii。我想让功能测试自动化,我已经有了 gerrit 和 Jenkins,正在工作。

我读了这篇笔记,发现 selenium 有类似 html 套件的东西。我以前从未听说过它,我总是编写通过 PHPUnit 运行的测试。我使用了这里描述的默认 Yii 功能测试环境。

所以我的问题是,这两种方法的优缺点是什么?我已经可以想到 html 套件的优点和缺点。Pro 是,编写测试真的很容易——你只需在 Selenium IDE 中“单击”它们。缺点是,我可能必须在测试之前运行 db 固定装置,而我无法更改它们,或者像运行它们一样 - 加载固定装置、运行测试、加载固定装置、运行测试,但我想这会使测试变得很多邋遢。你怎么看/你在这件事上的经验是什么?

4

2 回答 2

2

有一种编写功能测试的简单方法。你可以为selenium IDE下载一个插件,然后为这个插件添加php 格式化程序,你可以非常容易地制作和导出功能测试。

那么你应该配置你的 protected/config/test.php 和 protected/tests/bootstrap.php

您可能应该编辑 protected/tests/phpunit.xml 并删除除火狐之外的任何浏览器。

然后像 Willem Renzema 说的那样做,改变这个插件所做的测试,把类的名字改成 WebTestCase 并删除 setUp()

然后你就可以运行测试了!

干杯

于 2013-09-18T04:30:17.893 回答
-1

与 Yii 完美集成的两个软件包是 PhPUnit 和 Selenium Remote Control。所以这两个在 Yii 开发者之间比较常见。

关于部署功能测试,我不确定你想走多远,但就我使用它而言,这很容易。功能测试,实际上是从 CWebTestCase 扩展而来的 php 类。 Yii CWebTestCase 类描述

命名约定是您必须将类命名为以 Test 结尾的类,例如 ExampleTest.php,并将文件存储在 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.');
}
}

这就是我所知道的一切,我希望它有所帮助。

于 2013-02-01T18:44:04.433 回答