基境共享

2018-02-24 15:41 更新

基境共享

有幾個好的理由來在測試之間共享基境,但是大部分情況下,在測試之間共享基境的需求都源于某個未解決的設(shè)計問題。

一個有實際意義的多測試間共享基境的例子是數(shù)據(jù)庫連接:只登錄數(shù)據(jù)庫一次,然后重用此連接,而不是每個測試都建立一個新的數(shù)據(jù)庫連接。這樣能加快測試的運行。

Example?4.3, “在同一個測試套件內(nèi)的不同測試之間共享基境”setUpBeforeClass()tearDownAfterClass() 模板方法來分別在測試用例類的第一個測試之前和最后一個測試之后連接與斷開數(shù)據(jù)庫。

Example?4.3.?在同一個測試套件內(nèi)的不同測試之間共享基境

<?php
class DatabaseTest extends PHPUnit_Framework_TestCase
{
    protected static $dbh;

    public static function setUpBeforeClass()
    {
        self::$dbh = new PDO('sqlite::memory:');
    }

    public static function tearDownAfterClass()
    {
        self::$dbh = NULL;
    }
}
?>

需要反復(fù)強調(diào)的是:在測試之間共享基境會降低測試的價值。潛在的設(shè)計問題是對象之間并非松散耦合。如果解決掉潛在的設(shè)計問題并使用樁件(stub)(參見Chapter?9, 測試替身)來編寫測試,就能達成更好的結(jié)果,而不是在測試之間產(chǎn)生運行時依賴并錯過改進設(shè)計的機會。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號