[Fluter/Dart] 테스트 정보
개요
최근 품질 보증과 향상이 주목받는 가운데 시스템 각 분야의 테스트 자동화도 주목받고 있다.
지금까지도 테스트 스타일의 샘플을 만들어 목시로 테스트한 경우도 있는데, 횟수를 반복하면 같은 테스트를 해도 정밀도가 떨어지는 경우가 있겠죠.
그래서 요즘 시험의 주류는 인코딩이다.
test
주로 다음과 같은 3가지가 있다.
한번 해 보았다.
공통부분
대략, 쓰여 있지만, 기술 이하
flutter pub get
두드리기dev_dependencies:
integration_test:
sdk: flutter
flutter_test:
sdk: flutter
your_app/
lib/
main.dart
integration_test/
app_test.dart
test/
unit/
unit_test.dart
widget/
widget_test.dart
!포인트 테스트는integration-테스트 산하에서 다른 것은 모두 테스트 산하에서 제작된다.
!
테스트 파일의 파일 이름은'00'입니다.test.딸이라는 이름 아니면 안 될 것 같은데.
Integration 테스트의 경우
integration_test.dart
import 'package:flutter_test/flutter_test.dart'; //testコードはこれをimport
import 'package:integration_test/integration_test.dart'; //インテグレーションtestコードはこれをimport
import 'package:introduction/main.dart' as app; // as appでrunAppを記述したdartファイルを呼び出す。
void main() {
// インテグレーションテストの場合はこれを1行目に書く
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
// テストをグループ化するコード
group('end-to-end test', () {
// Widgetテストのコード
testWidgets('tap on the floating action button, verify counter',
(WidgetTester tester) async {
// ここでrunAppを起動
app.main();
// pumpAndSettleで画面を起動を待つ
await tester.pumpAndSettle();
// 初期値を確認
expect(find.text('0'), findsOneWidget);
// Widgetをtooltipをキーに見つける。…①
final Finder fab = find.byTooltip('Increment');
// ①で見つけたWidgetをタップするコード…②
await tester.tap(fab);
// ②でタップした結果を待つ、ロジック
await tester.pumpAndSettle();
// ボタン押下で内容が変化したかを確認するロジック
expect(find.text('1'), findsOneWidget);
});
});
}
[해설]Finder
Widget을 찾아서 그 Widget에 동작을 시작하고 Widget에 저장된 정보를 꺼냅니다.
expect
expect(A, B)
의A:Finderで指定した情報をとりだす。
,B:取り出した情報にマッチするじょうけんがいくつ存在しているかを指定する。
findsOneWidget // Finderで指定した条件のWidgetが一つだけ存在している場合。
findsNothing // Finderで指定した条件のWidgetが存在していない。
findsWidgets // Finderで指定した条件のWidgetが複数存在している場合。
findsNWidgets(n) // Finderで指定した条件のWidgetがn個存在している場合。
테스트 시
unit_test.dart
import 'package:flutter_test/flutter_test.dart';
void main() {
test('unit Test', () {
var test = 5;
expect(test, 5);
});
}
글쎄, integration 시험에서 거의 다 봤기 때문에 특별히 할 말은 없어요.controller, 서비스,provider 등의 테스트에서 사용할 수 있습니다.
widget 테스트 시
widget_test.dart
import 'package:flutter_test/flutter_test.dart';
testWidgets('NoteTest', (WidgetTester tester) async {
await tester.pumpWidget(
MaterialApp(
onGenerateRoute: (settings) {
if (settings.name == '/') {
return MaterialPageRoute(builder: (_) => const NoteListPage());
} else if (settings.name == '/edit') {
final arguments = settings.arguments as String?;
return MaterialPageRoute(
builder: (_) => NoteEditPage(note: arguments ?? ""),
);
}
throw Exception('Route not found');
},
),
);
expect(find.text('There\'s nothing to show'), findsOneWidget);
await tester.tap(find.byKey(const Key('add_note')));
await tester.pumpAndSettle();
expect(find.byKey(const Key('edit_text')), findsOneWidget);
await tester.enterText(find.byKey(const Key('edit_text')), 'ゴゴゴゴゴ・・・。');
await tester.tap(find.byKey(const Key('commit_button')));
await tester.pumpAndSettle();
expect(find.text('ゴゴゴゴゴ・・・。'), findsOneWidget);
・・・
});
트위스트 단일 테스트로 위젯을 만들려면tester.pumpWidget
가방MaterialApp
으로 안에 넣고 싶은 위젯을 넣는다.그리고 포인트 시험과 같은 방법.비동기 테스트 정보
라이브러리 추가
pubspec.yaml
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^1.0.0
mockito: #これと
build_runner: #これを追加する。
프로그램 라이브러리컨텐트
mockito
mockito에서 자동으로 비동기 실행 클래스를 생성합니다.
build_runner
mockito를 만들 때 필요합니다.
샘플 코드
([テストしたいClass])
void main() {
}
$ flutter pub pub run build_runner build
는 MockテストしたいClass
류로 나눌 수 있다.import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';
import 'package:sample/apis/MockビルドしたいClass.dart';
import 'package:sample/models/return_mock.dart';
import 'api_test.mocks.dart';
([テストしたいClass])
void main() {
var repository = MockテストしたいClass();
test('Testing cat sound method.', () async {
final returnMock = ReturnMock(
description: '',
);
when(repository.search('****')).thenAnswer((_) async => returnMock);
expect(await repository.search('****'), returnMock);
verify(repository.search('****'));
});
}
이렇게 Mockito를 사용해도 비동기적으로 처리된 테스트 코드를 기술할 수 있다.Finder 정보
이것은 Widget을 발견하는 데 사용되는 기능이지만, 발견된 수단이 산더미처럼 쌓여 있으니, 아래의 내용을 참고하십시오.주로 사용
byKey(const Key('キーの名前'))
키 정보
Key는 Key 값입니다. 테스트에서 Key 값은 Widget을 찾기 위해 Widget으로 설정할 수 있습니다.
대체로 어느 위젯이든 설정할 수 있다.
Text(
'Test',
key: const ValueKey('sample_key'),
),
키의 종류.
최후
이번엔 길어졌으니까 여기다 놔둬.
Reference
이 문제에 관하여([Fluter/Dart] 테스트 정보), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/tomofyro/articles/1228cf8f2b02ce텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)