Dart Unit Test
تست واحد در دارت Dart Unit Test
تست واحد شامل آزمایش واحد های جداگانه یک برنامه است.
تست واحد به برنامه نویسان کمک میکند تا بدون اجرای کل برنامه، قابلیت های و بخش های کوچکتر برنامه را جداگانه تست کنند.
کتابخانه خارجی test در زبان دارت یک روش استاندارد برای ایجاد و اجرای تست واحد فراهم کرده است.
بعد از نصب کتابخانه، آن را به صورت زیر در برنامه های خود وارد کنید:
1 | import "package:test/test.dart"; |
نوشتن تست Dart Unit Test
تست ها توسط تابع ()test مشخص میشوند. همچنین بخش راستی آزمایی نیز توسط تابع ()expect انجام میشود.
1 2 3 | test("Description of the test ", () { expect(actualValue , matchingValue) }); |
برای تست گروهی کد ها میتوانید از تابع ()group استفاده کنید.
1 2 3 4 5 6 7 8 | group("some_Group_Name", () { test("test_name_1", () { expect(actual, equals(exptected)); }); test("test_name_2", () { expect(actual, equals(expected)); }); }) |
در مثال زیر تابعی به نام ()Add تعریف کرده ایم. این تابع دو مقدار را دریافت و جمع آن ها را نمایش میدهد.
برای تست این تابع ابتدا پکیج test را در برنامه import کرده و سپس تابع ()test را مینویسیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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); }); } |
خروجی:
1 2 | 00:00 +0: test to check add method 00:00 +1: All tests passed! |
خروجی بالا موفقیت آمیز بودن تست را نشان میدهد.
در مثال زیر دو تابع ()Add و ()Sub را تعریف کرده ایم که تابع ()Sub تفریق دو عدد را برمیگرداند.
ما عمدا خروجی این تابع را تغییر داده تا نتیجه اشتباهی را برگرداند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 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 }); } |
تست واحد تابع ()Add را قبول میکند اما چون تابع ()Sub نتیجه اشتباه برمیگرداند، تست واحد خروجی زیر را به ما نشان میدهد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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) |
تست گروهی Dart Unit Test
تست گروهی برای مواقعی که تعداد زیادی واحد یا بخش کد را میخواهید تست کنید، مفید خواهد بود.
در مثال زیر توابع ()split و ()trim زبان دارت را به صورت گروهی آزمایش میکنیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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")); }); }); } |
خروجی:
1 2 3 | 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 |
آموزش کامل زبان برنامه نویسی دارت در برنامه اندرویدی ما:
دانلود نرم افزار اندرویدی آموزش زبان برنامه نویسی دارت از کافه بازار
تست واحد شامل آزمایش واحد های جداگانه یک برنامه است.تست واحد به برنامه نویسان کمک میکند تا بدون اجرای کل برنامه، قابلیت های و بخش های کوچکتر برنامه را جداگانه تست کنند.کتابخانه خارجی test در زبان دارت یک روش استاندارد برای ایجاد و اجرای تست واحد فراهم کرده است.بعد از نصب کتابخانه، آن را به صورت زیر در برنامه های خود وارد کنید: