sam*_*ayo 1 php phpunit unit-testing
我是PHPUnit的新手,事实上我今天开始了.而且,据我所读,我开始只了解这个脚本的作用.
class UserTest extends PHPUnit_Framework_TestCase
{
protected $user;
// test the talk method
protected function setUp() {
$this->user = new User();
$this->user->setName("Tom");
}
protected function tearDown() {
unset($this->user);
}
public function testTalk() {
$expected = "Hello world!";
$actual = $this->user->talk();
$this->assertEquals($expected, $actual);
}
}
Run Code Online (Sandbox Code Playgroud)
对于这堂课:
<?php
class User {
protected $name;
public function getName() {
return $this->name;
}
public function setName($name) {
$this->name = $name;
}
public function talk() {
return "Hello world!";
}
}
Run Code Online (Sandbox Code Playgroud)
好的,所以我已经确定测试会根据测试的相等性返回Ok/Fail语句,但我要找的更多.我需要一种实际的方法来测试一个更复杂的类,它的结果,在这个例子中不喜欢,不能轻易猜到.
说,我写了一个执行轮询的脚本.如果方法/类可以工作,我将如何测试或以何种方式测试?上面的代码只显示方法结果是否只会是,'Hello World'但是,测试太容易了,因为我需要测试复杂的东西,并没有太多的教程.
在单元测试中测试类应该不复杂.
这样做的原因在于,在一个设计良好的系统中,您可以单独测试该类,并且不会在该类后面添加系统的复杂性 - 因为在测试期间该系统不存在,它被模拟.
这方面的经典示例是User类通常会向数据库询问信息,但在测试用例中,该数据库实际上很难设置,准备数据并在之后销毁.使用真实数据库也会降低速度.因此,您将User类设计为从外部接受数据库对象,并在测试用例中为其提供数据库的模拟对象.
这样,从数据库中模拟各种返回值非常简单,此外,您可以检查数据库对象是否获得正确的参数,而无需处理真实数据库的复杂性.
如果您的类被设计为允许依赖注入,则只能执行正确的模拟对象注入.这是一个原则,不在其他对象内创建对象,但需要外部世界提供它们.只需快速浏览一些视频即可获得解释:
请记住,创建好的测试需要一些经验.很适合你开始试验.
| 归档时间: |
|
| 查看次数: |
838 次 |
| 最近记录: |