integrationDriver function
- Duration timeout = const Duration(minutes: 20),
- ResponseDataCallback? responseDataCallback = writeResponseData,
- bool writeResponseOnFailure = false,
Adaptor to run an integration test using flutter drive
.
To run an integration test <test_name>.dart
using flutter drive
, put a file named
<test_name>_test.dart
in the app's test_driver
directory:
import 'dart:async';
import 'package:integration_test/integration_test_driver.dart';
Future<void> main() async => integrationDriver();
Parameters:
timeout
controls the longest time waited before the test ends.
It is not necessarily the execution time for the test app: the test may
finish sooner than the timeout
.
responseDataCallback
is the handler for processing Response.data.
The default value is writeResponseData
.
writeResponseOnFailure
determines whether the responseDataCallback
function will be called to process the Response.data when a test fails.
The default value is false
.
Implementation
Future<void> integrationDriver({
Duration timeout = const Duration(minutes: 20),
ResponseDataCallback? responseDataCallback = writeResponseData,
bool writeResponseOnFailure = false,
}) async {
final FlutterDriver driver = await FlutterDriver.connect();
final String jsonResult = await driver.requestData(null, timeout: timeout);
final Response response = Response.fromJson(jsonResult);
await driver.close();
if (response.allTestsPassed) {
print('All tests passed.');
if (responseDataCallback != null) {
await responseDataCallback(response.data);
}
exit(0);
} else {
print('Failure Details:\n${response.formattedFailureDetails}');
if (responseDataCallback != null && writeResponseOnFailure) {
await responseDataCallback(response.data);
}
exit(1);
}
}