2008-11-14 28 views
3

我剛開始嘗試一些現有的代碼phpunit。我們使用的命名約定是MyClass類應該在MyClass.class.php中。 PHPUnit似乎要求該文件應該被稱爲MyClass.php。PHPUnit文件更新約定

有沒有辦法解決這個問題?

我注意到了這一點,而試圖生成一個框架測試類:

phpunit --skeleton-test MyClass.class 

PHPUnit 3.3.4 by Sebastian Bergmann. 

Could not find class "MyClass.class" in "/home/jd/skeleton/classes/MyClass.class.php". 
Fatal error: Call to a member function getOutClassName() on a non-object in /usr/share/php/PHPUnit/TextUI/Command.php on line 470 

回答

7

它不是必需的,它只是想當然。你可以編寫你自己的測試用例。

骨架只是一個模擬「簡單的方法」,爲所有類虛擬函數製作虛擬函數。

此外,

phpunit --skeleton-test MyClass MyClass.class.php 

可能會做你想要什麼。

Usage: phpunit [switches] UnitTest [UnitTest.php] 
     phpunit [switches] <directory> 

--skeleton-class   Generate Unit class for UnitTest in UnitTest.php. 
--skeleton-test   Generate UnitTest class for Unit in Unit.php. 

因此通過這種推理,如果你不告訴它的類是什麼在它的文件會嘗試猜測,如果你不告訴它的類是什麼文件,它不會猜。

+0

謝謝。如果我有大腦,我會很危險。 – 2008-11-14 11:06:35

0

當運行命名空間的骨骼類時,我碰到類似的問題。我從命令行使用phpunit 3.5.6。 phpUnit文檔示例對我無效,我無法在網上找到答案,所以我想我在這裏分享它。假設你在目錄/ my/dir中有類Foo,並且它在單個文件Foo.php中聲明,所以類文件的完整路徑是/my/dir/Foo.php

另外假設Foo聲明如下:

<?php 

namespace my\space; 
class Foo 
{ 
    ... 
} 

爲了生成測試骨架我確信我是在Foo.php所在的目錄,然後我跑到下面的命令:

user[/my/dir]$ phpunit --skeleton-test my\\dir\\Foo Foo.php 

這引起了我的骨架來產生。關鍵是逃避反斜槓,因爲phpUnit的文檔提到命名空間,但只顯示一個反斜槓。希望這可以幫助某人。