未完成的測(cè)試

2018-02-24 15:41 更新

未完成的測(cè)試

開始寫新的測(cè)試用例類時(shí),可能想從寫下空測(cè)試方法開始,比如:

public function testSomething()
{
}

以此來跟蹤需要編寫的測(cè)試。空測(cè)試的問題是 PHPUnit 框架會(huì)將它們解讀為成功。這種錯(cuò)誤解讀導(dǎo)致錯(cuò)誤報(bào)告變得毫無用處——無法分辨出測(cè)試是真的成功了還是根本就未編寫實(shí)現(xiàn)。在未實(shí)現(xiàn)的測(cè)試中調(diào)用 $this->fail() 同樣沒啥幫助,因?yàn)闇y(cè)試將被解讀為失敗。這和將未實(shí)現(xiàn)的測(cè)試解讀為成功是一樣的錯(cuò)誤。

假如把成功的測(cè)試視為綠燈、測(cè)試失敗視為紅燈,那么還額外需要黃燈來將測(cè)試標(biāo)記為未完成或尚未實(shí)現(xiàn)。PHPUnit_Framework_IncompleteTest 是一個(gè)標(biāo)記接口,用于將測(cè)試方法拋出的異常標(biāo)記為測(cè)試未完成或目前尚未實(shí)現(xiàn)而導(dǎo)致的結(jié)果。PHPUnit_Framework_IncompleteTestError 是這個(gè)界面的標(biāo)準(zhǔn)實(shí)現(xiàn)。

Example?7.1, “將測(cè)試標(biāo)記為未完成”展示了一個(gè)測(cè)試用例類 SampleTest,它有一個(gè)測(cè)試方法 testSomething()。通過在測(cè)試方法中調(diào)用便捷方法 markTestIncomplete()(會(huì)自動(dòng)拋出一個(gè) PHPUnit_Framework_IncompleteTestError 異常)將這個(gè)測(cè)試標(biāo)記為未完成。

Example?7.1.?將測(cè)試標(biāo)記為未完成

<?php
class SampleTest extends PHPUnit_Framework_TestCase
{
    public function testSomething()
    {
        // 可選:如果愿意,在這里隨便測(cè)試點(diǎn)什么。
        $this->assertTrue(TRUE, '這應(yīng)該已經(jīng)是能正常工作的。');

        // 在這里停止,并將此測(cè)試標(biāo)記為未完成。
        $this->markTestIncomplete(
          '此測(cè)試目前尚未實(shí)現(xiàn)。'
        );
    }
}
?>

在 PHPUnit 命令行測(cè)試執(zhí)行器的輸出中,未完成的測(cè)試記為 I,如下例所示:

phpunit --verbose SampleTest

PHPUnit 5.0.0 by Sebastian Bergmann and contributors.

I

Time: 0 seconds, Memory: 3.95Mb

There was 1 incomplete test:

1) SampleTest::testSomething
This test has not been implemented yet.

/home/sb/SampleTest.php:12
OK, but incomplete or skipped tests!
Tests: 1, Assertions: 1, Incomplete: 1.

Table?7.1, “用于未完成的測(cè)試的 API”列舉了用于將測(cè)試標(biāo)記為未完成的 API。

Table?7.1.?用于未完成的測(cè)試的 API

方法 含義
void markTestIncomplete() 將當(dāng)前測(cè)試標(biāo)記為未完成。
void markTestIncomplete(string $message) 將當(dāng)前測(cè)試標(biāo)記為未完成,并用 $message 作為說明信息。
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)