我有一個測試下面的測試方法,如果一個構造器正常工作:什麼是單元測試構造函數的最佳方法?
選項#1
public function testConstructWorksProperly()
{
$id = 1;
$name = 'name';
$foo = new Foo($id, $name);
$this->assertEquals($id, $foo->getId());
$this->assertEquals($name, $foo->getNome());
}
選項#2
public function testConstructWorksProperly()
{
$id = 1;
$name = 'name';
$foo = new Foo($id, $name);
$this->assertAttributeEquals($id, 'id', $foo);
$this->assertAttributeEquals($name, 'name', $foo);
}
在選項#1我需要創建getter來聲明構造函數正常工作,而在#2選項中,我使用斷言來檢查構造函數是否設置了p性能正確。
我總是想知道在每次使用選項#1時我需要公開訪問這些屬性,因爲我節省了時間和LOC,而不是爲getId
和getName
編寫另外2個測試。
使用方案二似乎是一個白盒測試。 但是...
有一種說法:「每個測試一個斷言」,所以,如果我的構造函數有6個參數,我需要6個斷言和6個getter來公開測試這些方法。
你會使用哪個選項?
除了選項,也許它只是我,我會通過參數 – Andrew
@Andrew通過Foo'的'實例,我在測試Foo方法時,不要將它用作參數。 –
除非你的setters正在做一些與衆不同的事情,單元測試getter和setter沒有多大意義 –