Test Dependencies
Test Dependencies memiliki tujuan seperti unit testing yang ditulis untuk salah satu praktik yang bagus membantu pengembang mengidentifikasi dan memperbaiki bug, refactor kode dan untuk melayani sebagai dokumentasi untuk unit perangkat lunak yang diuji. Untuk mencapai manfaat ini, unit test idealnya harus mencakup semua jalur yang mungkin dalam sebuah program. Satu unit test biasanya mencakup satu jalur khusus di salah satu fungsi atau metode. Namun metode uji tidak perlu sebuah dikemas, badan independen. Sering ada ketergantungan implisit antara metode pengujian, yang tersembunyi dalam pelaksanaan skenario tes.
Menunjukkan bagaimana menggunakan @depends
dan dijelaskan untuk mengekspresikan ketergantungan antara metode testing.
Contoh 2.2: Menggunakan penjelasan @depends
untuk mengekspresikan dependensi
class StackTest extends PHPUnit_Framework_TestCase
{
public function testEmpty()
{
$stack = array();
$this->assertEmpty($stack);
return $stack;
}
/**
* @depends testEmpty
*/
public function testPush(array $stack)
{
array_push($stack, 'foo');
$this->assertEquals('foo', $stack[count($stack)-1]);
$this->assertNotEmpty($stack);
return $stack;
}
/**
* @depends testPush
*/
public function testPop(array $stack)
{
$this->assertEquals('foo', array_pop($stack));
$this->assertEmpty($stack);
}
}
?>
Hasil ketika menjalankan unit testing PHPUnit menggunakan phpunit --debug
:
Progam PHPUnit akan mengetest setiap methode yang ada, mulai tetstEmpty
, testPush
, testPop
dan semua method berjalan dengan normal.
Contoh 2.3: Pemanfaatan dependensi
class DependencyFailureTest extends PHPUnit_Framework_TestCase
{
public function testOne()
{
$this->assertTrue(FALSE);
}
/**
* @depends testOne
*/
public function testTwo()
{
}
}
?>
Hasil ketika menggunakan phpunit --verbose DependencyFailureTest.php
Contoh selanjutnya yaitu MultipleDependenciesTest
yang memiliki multi dependencies dalam pengetesannya.
class MultipleDependenciesTest extends PHPUnit_Framework_TestCase
{
public function testProducerFirst()
{
$this->assertTrue(true);
return 'first';
}
public function testProducerSecond()
{
$this->assertTrue(true);
return 'second';
}
/**
* @depends testProducerFirst
* @depends testProducerSecond
*/
public function testConsumer()
{
$this->assertEquals(
array('first', 'second'),
func_get_args()
);
}
}
?>
Hasil ketika ditest : phpunit --verbose MultipleDependenciesTest