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

results matching ""

    No results matching ""