Birim testlerin önemini artık duymayan kalmadı. :D D'de nasıl kullanıldıkları şurada var:
http://ddili.org/ders/d/birim_testler.html
Bunun bir üstü, testleri de test etmek... Çünkü testler, programın bütün satırlarını kapsayacak kadar geniş olmayabilirler. Bu, kod kapsamına (code coverage) bakarak anlaşılıyor.
Program -cov ile derleniyor:
dmd -cov -unittest -w deneme.d
Ondan sonra çalıştırılıyor:
/deneme
Sonunda deneme.lst diye bir dosya oluşuyor. O dosya, hangi satırın kaç kere işletildiğini gösteriyor.
Örnek:
import std.stdio;
int birHesap(int sayı)
{
int sonuç = 2 * sayı;
// Tek sayılarda 7 daha eklenmeli
if (sayı % 2) {
sonuç += 7;
}
return sonuç;
}
unittest
{
assert(birHesap(42) == 84);
}
void main()
{}
Programı çalıştırdıktan sonra oluşan deneme.lst dosyası şöyle:
|import std.stdio;
|
|int birHesap(int sayı)
|{
1| int sonuç = 2 * sayı;
|
| // Tek sayılarda 7 daha eklenmeli
1| if (sayı % 2) {
0000000| sonuç += 7;
| }
|
1| return sonuç;
|}
|
|unittest
|{
1| assert(birHesap(42) == 84);
|}
|
|void main()
|{}
deneme.d is 80% covered
Başında 0000000 olan satırlar hiç çalışmamış (yani denenememiş) olan satırları gösteriyorlar. O yüzden de bu programın yalnızca %80'inin kapsandığı bildiriliyor. (Diğer sayılar her satırın kaç kere işletildiğini gösteriyor.)
Test kapsamını arttırmak için bu durumda şu da eklenebilir:
assert(birHesap(3) == 13);
Artık %100...
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]