1. 'test' package를 test dependency 에 추가
'test' package (테스트 패키지)
Dart 에서 테스트를 작성하기 위한 핵심 기능을 제공. 테스트 패키지를 이용해 테스트 케이스를 작성하는 것이 가장 좋은 방법이다.
'test' package 추가
- terminal
> flutter pub add test --dev
위 명령어를 termial 입력하면, pubspec.yaml 의 dev_dependencies 에 추가된다.
- pubspec.yaml
dev_dependencies:
test: <latest_version>
pubspec.yaml 파일에 직접 입력할 수 있다. latest_version 에는 최신 버전을 입력한다. 글을 작성하는 현재 test 패키지의 최신버전은 1.16.5 이다.
2. 테스트 할 Class 작성
lib/counter.dart 에 아래 내용을 작성한다.
class Counter {
int value = 0;
void increment() => value++;
void decrement() => value--;
}
3. Test 케이스 작성
test/counter_test.dart에 테스트 케이스를 작성한다.
test() 메소드에는 description과 실행할 body 함수를 입력한다.
void test (dynamic description, dynamic body())
자세한 내용 : https://pub.dev/documentation/test_core/latest/test_core.scaffolding/test.html
Counter 클래스의 increment() 메소드를 호출하면 value 값이 1 증가하는지 확인한다.
given-when-then 패턴으로 테스트 케이스를 작성한다.
import 'package:flutter_plugin_test/counter.dart';
import 'package:flutter_test/flutter_test.dart';
void main (){
test('Counter value should be incremented', () {
//given
final counter = Counter();
int expected = counter.value + 1;
//when
counter.increment();
//then
expect(counter.value, expected);
});
}
given-when-then 패턴
given
- 테스트를 위해 준비하는 과정. Counter() 클래스를 선언하고, 예상되는 결과값을 설정한다.
when
- 실제로 메소드를 동작하는 과정
then
- 테스트를 검증하는 과정. 예상한 값과, 실제 실행을 통해 나온 값을 검증한다.
4. 'group' 으로 Test case 그룹화
연관된 테스트 케이스를 group 으로 묶어서 관리할 수 있다.
import 'package:flutter_plugin_test/counter.dart';
import 'package:test/test.dart';
void main (){
group('Counter', (){
test('value should start at 0', () {
//given
const expected = 0;
//when
//then
expect(Counter().value, expected);
});
test('value should be incremented', () {
//given
final counter = Counter();
const expected = 1;
//when
counter.increment();
//then
expect(counter.value, expected);
});
test('value should be decremented', () {
//given
final counter = Counter();
const expected = -1;
//when
counter.decrement();
//then
expect(counter.value, -1);
});
});
}
5. Terminal 에서 실행
> flutter test test/counter_test.dart
'Flutter' 카테고리의 다른 글
test_package.expect() 분석 (0) | 2021.07.05 |
---|---|
Flutter Widget Test (0) | 2021.07.04 |
Null Safety (0) | 2021.06.02 |