참조 https://github.com/dart-lang/test/blob/master/pkgs/test/README.md
하나의 Unit test는 하나의 함수, 메소드, 클래스를 테스트합니다.
Unit test의 목적은 이런 단위 로직들이 올바르게 작동하는지를 테스트하기 위해서 입니다.
유닛의 외부 종속성은 일반적으로
Mockito
로 대체(mock) 됩니다.
유닛 테스트에 대한 더 자세한 개념은 아래 블로그에 잘 정리되어 있습니다.
https://nesoy.github.io/articles/2018-02/CleanCode-UnitTest일반적으로 프로젝트를 만들면 자동으로 flutter_test 가 펍스펙에 등록되어 있습니다
flutter_test 와 test의 차이는
test 패키지는 dart 언어 전반을 위한 것이고,
flutter_test 패키지는 flutter 프레임워크 전용으로 test 패키지 위에 기능이 추가된 것입니다.
test 패키지는 test_api나 test_core 같은 더 작은 패키지를 기반으로 하고 있지만, 이 두 패키지는 직접 사용하기를 권장하지 않습니다.
참고 (flutter_test api 문서)
플러터 프로젝트를 만들면 기본적으로 test 폴더가 생성되어 있습니다.
test 폴더 안에는 widget_test.dart 파일이 들어있습니다.
이렇게 test 파일은 플러터 앱이나 패키지의 루트 폴더에 있는 test 폴더에 들어있어야 합니다.
test 파일 이름은 관습적으로 _test.dart로 끝나게 해줘야 합니다.
그래야 테스트 러너가 제대로 작동합니다.
공식 문서에서는 counter.dart 와 counter_test.dart 라는 파일을 만듭니다.
당연히 각각 lib 와 test 폴더에 만들어야 합니다.
TDD(Test Driven Development ; 테스트 주도 개발) 를 위해서는 아래 4번 테스트를 먼저 작성해야 하지만 간단함을 위해서 TDD를 따르지 않았습니다.
이제 테스트를 위한 유닛이 필요합니다.
유닛은 함수이거나, 메소드 또는 클래스가 될 수 있습니다.
공식 문서에서는 기본 플러터 앱에서 사용되는 Counter 클래스를 구현합니다
counter.dart 에 아래 코드를 넣습니다.
class Counter { int value = 0; void increment() => value++; void decrement() => value--; }
counter_test.dart 파일 안에 첫 번째 유닛 테스트를 작성합니다.
탑 레벨 함수 test 를 사용해서 테스트를 작성합니다.
// Import the test package and Counter class import 'package:test/test.dart'; import 'package:counter_app/counter.dart'; void main() { test('Counter value should be incremented', () { final counter = Counter(); counter.increment(); expect(counter.value, 1); }); }
그룹을 이용해서 연관된 테스트들을 하나로 묶을 수 있습니다.
import 'package:test/test.dart'; import 'package:counter_app/counter.dart'; void main() { group('Counter', () { test('value should start at 0', () { expect(Counter().value, 0); }); test('value should be incremented', () { final counter = Counter(); counter.increment(); expect(counter.value, 1); }); test('value should be decremented', () { final counter = Counter(); counter.decrement(); expect(counter.value, -1); }); }); }
프로젝트 루트 폴더에서 아래 명령어를 실행합니다
flutter test test/counter_test.dart