2012-05-13 83 views
3

對於我們的項目,我在PHPUnit框架之上創建了一個框架,它幫助我們編寫單元測試的一些常見任務。使用定製框架從目錄運行PHPUnit測試

此自定義框架繼承自PHPUnit_Framework_TestCase,然後修改mySetup()併爲我們的代碼添加一堆有用的函數。

<?php 

class OurUnitTestFramework extends PHPUnit_Framework_TestCase { 

    public $dbMock; 
    protected function mySetup (..) { ... } 
    protected function testHelper() { ... } 

} 
?> 

現在,在我們的測試代碼中,我們只是擴大OurUnitTestFramework然後編寫測試。

<?php 
require_once ("OurUnitTestFramework"); 
class DatabaseConnectionTest extends OurUnitTestFramework { 
    parent::setUp (..) { ... } 
    public function testSomeThing() { ... } 
    public function testSomeOtherThing() { ... } 

} 
?> 

到目前爲止我們通過詹金斯運行所有的單元測試,它仍然運行良好,但現在,當我們嘗試運行失敗的文件夾中的測試。該文件夾內的所有測試/子文件夾中成功運行,但有一個故障:

[[email protected] model]$ phpunit database 
PHPUnit 3.5.14 by Sebastian Bergmann. 

F........ 

Time: 0 seconds, Memory: 10.50Mb 

There was 1 failure: 

1) Warning 
No tests found in class "OurUnitTestFramework". 


FAILURES! 
Tests: 9, Assertions: 30, Failures: 1. 

我有有子目錄和所有的測試從該文件夾和子文件夾它傳遞一個目錄數據庫,但我從拿到失敗OurUnitTestFramework表示在這個定製框架中沒有找到測試。所以我無法理解爲什麼phpunit在測試文件中包含/擴展的文件上運行單元測試?

我們可以簡單地選擇忽略此有一個錯誤,但我想知道是否還好這樣離開還是有,我需要配置,使之通過東西。

感謝

+0

您可以直接不涉及'OurUnitTestFramework'運行在隔離該文件中的測試,沒有其他的測試和使用PHPUnit。這可能有助於隔離您的問題。 – vascowhite

+0

我能夠單獨運行測試,但所有測試都包含'OurUnitTestFramework'。我不能拿出這個框架並直接使用PHPUnit,因爲它需要重新編寫測試。有沒有其他方法?謝謝! – Sumitk

回答

4

使 'OurUnitTestFramework' 的抽象類。

+1

這將如何幫助?真正的問題,不是諷刺或粗魯,只是好奇。 – vascowhite

+0

工作!你能解釋爲什麼它以這種方式工作?我也很好奇。非常感謝!! – Sumitk

+1

PHPUnit中的每個單元測試類都必須至少有一個測試,這只是您得到的錯誤。由於這不是一個真正的單元測試,並且它只是一個基類,它使得Abstract不僅是有意義的,而且也使得PHPUnit忽略它作爲一個單元測試類。 – Evert

相關問題