Dart 프로그래밍-단위 테스트

단위 테스트에는 애플리케이션의 모든 개별 단위 테스트가 포함됩니다. 개발자가 복잡한 애플리케이션 전체를 실행하지 않고도 작은 기능을 테스트 할 수 있도록 도와줍니다.

다트 external library "test"라는 이름은 단위 테스트를 작성하고 실행하는 표준 방법을 제공합니다.

Dart 단위 테스트에는 다음 단계가 포함됩니다.

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(). 이 메서드는 두 개의 정수 값을 취하고 다음을 나타내는 정수를 반환합니다.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