我想打電話給他們,而不是重複他們在所有的單元測試,像這樣的例如重用我的一些PHPUnit的功能:如何重用PHPUnit的功能
public function testContent()
{
$this->assertNotEmpty($this->response, $this->message);
}
如果我把它在測試/測試用例.php,它運行所有的單元測試。
哪裏會是正確的地方放這個或通常如何做?順便說一句,我使用它Laravel 4
我想打電話給他們,而不是重複他們在所有的單元測試,像這樣的例如重用我的一些PHPUnit的功能:如何重用PHPUnit的功能
public function testContent()
{
$this->assertNotEmpty($this->response, $this->message);
}
如果我把它在測試/測試用例.php,它運行所有的單元測試。
哪裏會是正確的地方放這個或通常如何做?順便說一句,我使用它Laravel 4
顯然,你的問題不是重複使用測試,而是當你的測試不在預期的時候被調用。
因此,請記住:現有類中任何名稱以「test」(testFoo,testBar)開頭的方法都將被視爲測試。
所以,如果你有類A,B和C這樣
class A extends \PHPUnit_Framework_TestCase {
public function testFoo() {...}
public function testBar() {...}
}
class B extends A {
public function testBaz() {...}
}
class C extends A {
public function testQuz() {...}
}
,你將有8個測試:A ::命名爲testFoo(),A :: testBar(),B ::命名爲testFoo() B :: testBar(),B :: testBaz(),C :: testFoo(),C :: testBar(),C :: testQuz()。
這可能不是你想要做的。 您可能只想在類B和C中使用testFoo和testBar,而不是在這種情況下,您只需將A聲明爲抽象類。
abstract class A extends \PHPUnit_Framework_TestCase {
public function testFoo() {...}
public function testBar() {...}
}
class B extends A {
public function testBaz() {...}
}
class C extends A {
public function testQuz() {...}
}
現在你有6個檢查:B ::命名爲testFoo(),B :: testBar(),B :: testBaz(),C ::命名爲testFoo(),C :: testBar(),C: :testQuz()。
也許,這是你需要的,也許不是。也許,你想要testFoo()和testBar()只在一些繼承類,而不是所有的。
在這種情況下,請在您的父類中聲明而不是測試。現在
abstract class A extends \PHPUnit_Framework_TestCase {
public function assertFoo() { ... }
public function assertBar() { ... }
}
class B extends A {
public function testFoo() { $this->assertFoo(); ...}
public function testBaz() {...}
}
class C extends A {
public function testBar() { $this->assertBar(); ...}
public function testQuz() {...}
}
,你只有4檢查:B ::命名爲testFoo(),B :: testBaz,C :: testBar(),C :: testQuz()
製造類似
namespace Vendor\Library\Tests;
abstract class BaseTestCase extends \PHPUnit_Framework_TestCase
{
public function assertContentNotEmpty($response) {
$this->assertNotEmpty($response);
}
}
然後用你的測試擴展該類自己的主張。 如果這種方法由於某些原因不方便,可以將斷言作爲一個單獨的類來進行。
一般來說,單元測試應該有相關的斷言。檢查響應的內容,以及設置不同場景時所期望的具體差異,而不是空的。 – jedifans
@jedifans我沒有看到任何問題可以做出自己的斷言 –
讓自己做得很好,但對每個測試重複聲明相同的斷言表明測試不會改變他們設置的內容。由於每個合作者都應該被嘲笑,應該只有一些明確的情況,其中迴應可能是空的。 – jedifans