簡體   English   中英

當我更改測試順序時,單元測試通過

[英]Unit tests pass when I change the order of tests

在單元測試中,我正在使用以下getDataSet方法設置數據庫。 測試類從擴展PHPUnit_Extensions_Database_TestCase擴展

看起來框架沒有在每次測試前刪除並重新插入行。 我之所以這樣認為,是因為當我更改某些測試的順序時,我的測試通過了,這是永遠不會發生的。

那么,誰能建議我在做什么錯..還是我應該進一步尋找更多的見識?

另外,我必須使用復合數據集,因為一些較舊的燈具為xml格式,而新的燈具為數組格式。 盡管這一點不需要xml固定裝置。

public function getDataSet()
{

    $compositeDs = new PHPUnit_Extensions_Database_DataSet_CompositeDataSet();
    /** @var  PHPUnit_Extensions_Database_DataSet_FlatXmlDataSet $ds */
    $arrayDS = new ArrayDataSet([
        __DIR__ . '/seed-data/companies.php',
    ]);

    $compositeDs->addDataSet($arrayDS);

    return $compositeDs;
}

可能是因為我保存了pdo連接並重用了它嗎? 如下

final public function getConnection()
{
    if ($this->conn === null) {
        if (self::$pdo == null) {
            self::$pdo = new PDO($GLOBALS['DB_DSN'], $GLOBALS['DB_USER'], $GLOBALS['DB_PASSWD']);
        }
        $this->conn = $this->createDefaultDBConnection(self::$pdo, $GLOBALS['DB_DBNAME']);
    }

    return $this->conn;
}

在每次測試之前都會調用getDataSet ,因此每次測試時,您的數據庫表都會被截斷並與提供的數據一起插入。

這就是為什么測試順序無關緊要的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM