Dartプログラミング-ユニットテスト

ユニットテストでは、アプリケーションの個々のユニットをすべてテストします。これは、開発者が複雑なアプリケーション全体を実行せずに小さな機能をテストするのに役立ちます。

ダート external library 「test」という名前は、単体テストを記述して実行するための標準的な方法を提供します。

ダートユニットテストには、次の手順が含まれます-

Step 1: Installing the "test" package

現在のプロジェクトにサードパーティのパッケージをインストールするには、 pubspec.yamlファイル。インストールするにはtest packages、最初に次のエントリを作成します pubspec.yaml ファイル-

dependencies: 
test:

入力後、右クリックして pubspec.yamlファイルを作成し、依存関係を取得します。インストールします"test"パッケージ。以下に示すのは、同じもののスクリーンショットです。WebStorm 編集者。

パッケージはからインストールできます command lineあまりにも。ターミナルに次のように入力します-

pub get

Step 2: Importing the "test" package

import "package:test/test.dart";

Step 3 Writing Tests

テストは、最上位の関数を使用して指定されます test()、ながら test assertions を使用して作られています expect()関数。これらの方法を使用するには、次のようにインストールする必要がありますpub 依存。

構文

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

ザ・ group()関数を使用して、テストをグループ化できます。各グループの説明は、テストの説明の先頭に追加されます。

構文

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

例1:合格テスト

次の例では、メソッドを定義しています Add()。このメソッドは2つの整数値を取り、sum。これをテストするにはadd() 方法−

Step 1 −インポート test 以下のパッケージ。

Step 2 −を使用してテストを定義します test()関数。ここでは、test() 関数はを使用します expect() アサーションを強制する関数。

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); 
   }); 
}

次のようになります output

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

例2:失敗したテスト

ザ・ subtract()以下に定義されているメソッドには論理的な誤りがあります。以下test 同じことを確認します。

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 −関数のテストケース add() 合格しますが、 subtract() 以下に示すように失敗します。

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 casesテストコードに意味を追加します。あなたがたくさん持っているならtest cases これは、はるかにクリーンなコードを書くのに役立ちます。

与えられたコードでは、のテストケースを書いています split() 機能と trim関数。したがって、これらのテストケースを論理的にグループ化し、それを呼び出しますString

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 −出力には、以下に示すように、各テストケースのグループ名が追加されます。

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