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