PHPUnit-Hello World测试

时间:2020-02-23 14:42:04  来源:igfitidea点击:

在本教程中,我们将编写我们的第一个PHPUnit测试。

测试hello world

在我们的入门教程中创建的测试文件夹中,我们将继续创建HelloWorldTest.php文件。

在文件内编写以下代码。

<?php

class HelloWorldTest extends \PHPUnit_Framework_TestCase {
	
}

?>

我们创建了一个类HelloWorldTest,它正在扩展PHPUnit_Framework_TestCase类。

此时该类为空,因此如果我们运行phpunit,将收到以下警告,指出该类中没有测试。

WARNINGS!
Tests: 1, Assertions: 0, Warnings: 1.

现在,让我们继续进行第一个测试。
因此,在类内部创建以下方法。

public function testGreeting() {
	//some code here...
}

因此,我们创建了第一个测试方法并将其命名为testGreeting

在测试方法之前添加单词test是一个命名约定。

此时,该方法为空,因此,如果再次运行phpunit,将得到以下输出。

OK (1 test, 0 assertions)

这意味着我们有1个测试,但测试中有0个资产。
因此,让我们继续并将更多代码添加到我们的testGreeting()方法中并执行一些声明。

添加断言

可以说,我们要检查变量的值是否等于所需值。

因此,在下面的代码中,我们有一个$greeting变量,它包含" Hi World"字符串。

现在,假设我们要检查它是否等于$requiredGreeting`值。

为了执行equals断言,我们使用assertEquals()方法。

public function testGreeting() {

	$greeting = "Hi World";
	$requiredGreeting = "Hello World";

	$this->assertEquals($greeting, $requiredGreeting);

}

如果查看上面的代码,您会看到所需的问候消息不等于该问候消息。
因此,如果我们运行测试,将会得到失败的结果。

FAILURES!
Tests: 1, Assertions: 1, Failures: 1.

因此,以上输出表明" Hello World"是预期的,但提供了" Hi World"。

要解决此问题,我们必须将$greeting变量的值设置为" Hello World"。

最终代码

<?php

class HelloWorldTest extends \PHPUnit_Framework_TestCase {

	public function testGreeting() {

		$greeting = "Hello World";
		$requiredGreeting = "Hello World";

		$this->assertEquals($greeting, $requiredGreeting);

	}

}

?>

现在,如果我们运行测试,我们将得到以下输出。

OK (1 test, 1 assertion)