Dart Programlama - Birim Testi

Birim Testi, bir uygulamanın her bir biriminin test edilmesini içerir. Geliştiricinin, tüm karmaşık uygulamayı çalıştırmadan küçük işlevleri test etmesine yardımcı olur.

Dart external library "test" adı verilen birim testleri yazmak ve çalıştırmak için standart bir yol sağlar.

Dart birimi testi aşağıdaki adımları içerir -

Step 1: Installing the "test" package

Mevcut projede üçüncü taraf paketleri kurmak için, pubspec.yamldosya. Yüklemektest packagesönce aşağıdaki girişi yapın pubspec.yaml dosya -

dependencies: 
test:

Girişi yaptıktan sonra, sağ tıklayın pubspec.yamldosya ve bağımlılıkları alın. Yükleyecek"test"paketi. Aşağıda verilen aynı ekran görüntüsüdür.WebStorm Editör.

Paketler şuradan yüklenebilir: command lineçok. Aşağıdakileri terminale yazın -

pub get

Step 2: Importing the "test" package

import "package:test/test.dart";

Step 3 Writing Tests

Testler, üst düzey işlev kullanılarak belirtilir test(), süre test assertions kullanılarak yapılır expect()işlevi. Bu yöntemleri kullanmak için, birpub bağımlılık.

Sözdizimi

test("Description of the test ", () {  
   expect(actualValue , matchingValue) 
});

group()işlevi testleri gruplamak için kullanılabilir. Her grubun açıklaması, test açıklamalarının başına eklenir.

Sözdizimi

group("some_Group_Name", () { 
   test("test_name_1", () { 
      expect(actual, equals(exptected)); 
   });  
   test("test_name_2", () { 
      expect(actual, equals(expected)); 
   }); 
})

Örnek 1: Başarılı Bir Test

Aşağıdaki örnek bir yöntemi tanımlar Add(). Bu yöntem iki tamsayı değeri alır ve şunu temsil eden bir tamsayı döndürürsum. Bunu test etmek içinadd() yöntem -

Step 1 - İçe aktar test aşağıda verilen paket.

Step 2 - testi kullanarak tanımlayın test()işlevi. Buradatest() işlevi kullanır expect() bir iddiayı güçlendirmek için işlev.

import 'package:test/test.dart';      
// Import the test package 

int Add(int x,int y)                  
// Function to be tested { 
   return x+y; 
}  
void main() { 
   // Define the test 
   test("test to check add method",(){  
      // Arrange 
      var expected = 30; 
      
      // Act 
      var actual = Add(10,20); 
      
      // Asset 
      expect(actual,expected); 
   }); 
}

Aşağıdakileri üretmelidir output -

00:00 +0: test to check add method 
00:00 +1: All tests passed!

Örnek 2: Başarısız Bir Test

subtract()aşağıda tanımlanan yöntemin mantıksal bir hatası var. Aşağıdakitest aynı şeyi doğrular.

import 'package:test/test.dart'; 
int Add(int x,int y){ 
   return x+y; 
}
int Sub(int x,int y){ 
   return x-y-1; 
}  
void main(){ 
   test('test to check sub',(){ 
      var expected = 10;   
      // Arrange 
      
      var actual = Sub(30,20);  
      // Act 
      
      expect(actual,expected);  
      // Assert 
   }); 
   test("test to check add method",(){ 
      var expected = 30;   
      // Arrange 
      
      var actual = Add(10,20);  
      // Act 
      
      expect(actual,expected);  
      // Asset 
   }); 
}

Output - İşlev için test durumu add() geçer ama için test subtract() aşağıda gösterildiği gibi başarısız olur.

00:00 +0: test to check sub 
00:00 +0 -1: test to check sub 
Expected: <10> 
Actual: <9> 
package:test  expect 
bin\Test123.dart 18:5  main.<fn> 
   
00:00 +0 -1: test to check add method 
00:00 +1 -1: Some tests failed.  
Unhandled exception: 
Dummy exception to set exit code. 
#0  _rootHandleUncaughtError.<anonymous closure> (dart:async/zone.dart:938) 
#1  _microtaskLoop (dart:async/schedule_microtask.dart:41)
#2  _startMicrotaskLoop (dart:async/schedule_microtask.dart:50) 
#3  _Timer._runTimers (dart:isolate-patch/timer_impl.dart:394) 
#4  _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:414) 
#5  _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:148)

Test Durumlarını Gruplama

Gruplayabilirsiniz test casesböylece test kodunuza daha fazla anlam katar. Eğer çok varsatest cases bu daha temiz kod yazmanıza yardımcı olur.

Verilen kodda, için bir test senaryosu yazıyoruz. split() fonksiyon ve trimişlevi. Bu nedenle, bu test durumlarını mantıksal olarak gruplandırıyoruz ve bunaString.

Misal

import "package:test/test.dart"; 
void main() { 
   group("String", () { 
      test("test on split() method of string class", () { 
         var string = "foo,bar,baz"; 
         expect(string.split(","), equals(["foo", "bar", "baz"])); 
      }); 
      test("test on trim() method of string class", () { 
         var string = "  foo "; 
         expect(string.trim(), equals("foo")); 
      }); 
   }); 
}

Output - Çıktı, aşağıda verildiği gibi her bir test senaryosu için grup adını ekleyecektir -

00:00 +0: String test on split() method of string class 
00:00 +1: String test on trim() method of string class 
00:00 +2: All tests passed