未完成的測試

2018-02-24 15:41 更新

未完成的測試

開始寫新的測試用例類時,可能想從寫下空測試方法開始,比如:

public function testSomething()
{
}

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

假如把成功的測試視為綠燈、測試失敗視為紅燈,那么還額外需要黃燈來將測試標記為未完成或尚未實現。PHPUnit_Framework_IncompleteTest 是一個標記接口,用于將測試方法拋出的異常標記為測試未完成或目前尚未實現而導致的結果。PHPUnit_Framework_IncompleteTestError 是這個界面的標準實現。

Example?7.1, “將測試標記為未完成”展示了一個測試用例類 SampleTest,它有一個測試方法 testSomething()。通過在測試方法中調用便捷方法 markTestIncomplete()(會自動拋出一個 PHPUnit_Framework_IncompleteTestError 異常)將這個測試標記為未完成。

Example?7.1.?將測試標記為未完成

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

        // 在這里停止,并將此測試標記為未完成。
        $this->markTestIncomplete(
          '此測試目前尚未實現。'
        );
    }
}
?>

在 PHPUnit 命令行測試執(zhí)行器的輸出中,未完成的測試記為 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, “用于未完成的測試的 API”列舉了用于將測試標記為未完成的 API。

Table?7.1.?用于未完成的測試的 API

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號