跳過測試

2018-02-24 15:41 更新

跳過測試

并非所有測試都能在任何環(huán)境中運行。比如說,考慮這樣一種情況:一個數(shù)據(jù)庫抽象層,針對其所支持的各種數(shù)據(jù)庫系統(tǒng)有多個不同的驅動程序。針對 MySQL 驅動程序的測試當然只在 MySQL 服務器可用才能運行。

Example?7.2, “跳過某個測試” 展示了一個測試用例類 DatabaseTest,它有一個測試方法 testConnection()。在測試用例類的 setUp()模板方法中,檢查了 MySQLi 擴展是否可用,并且在擴展不可用時用 markTestSkipped() 方法來跳過此測試。

Example?7.2.?跳過某個測試

<?php
class DatabaseTest extends PHPUnit_Framework_TestCase
{
    protected function setUp()
    {
        if (!extension_loaded('mysqli')) {
            $this->markTestSkipped(
              'The MySQLi 擴展不可用。'
            );
        }
    }

    public function testConnection()
    {
        // ...
    }
}
?>

在 PHPUnit 命令行測試執(zhí)行器的輸出中,被跳過的測試記為 S,如下例所示:

phpunit --verbose DatabaseTest

PHPUnit 5.0.0 by Sebastian Bergmann and contributors.

S

Time: 0 seconds, Memory: 3.95Mb

There was 1 skipped test:

1) DatabaseTest::testConnection
The MySQLi extension is not available.

/home/sb/DatabaseTest.php:9
OK, but incomplete or skipped tests!
Tests: 1, Assertions: 0, Skipped: 1.

Table?7.2, “用于跳過測試的 API”列舉了用于跳過測試的 API。

Table?7.2.?用于跳過測試的 API

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號