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