#flutter #flutter-integration-test
Вопрос:
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:integration_test/integration_test.dart';
import 'package:knights_bridge/main.dart' as app;
import 'dart:io';
import 'package:knights_bridge/screens/shared/bigButtonFilled.dart';
void main() {
group('Sign in test', () {
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
testWidgets('Validate sign in and dashboard', (tester) async {
app.main();
await tester.pumpAndSettle();
final emailField = find.byKey(Key('login'));
final passwordField = find.byKey(Key('password'));
final signInButton = find.text('Sign in');
// final signInButton = find.byType(BigFilledButton);
print("Starting typing in email field");
await tester.enterText(emailField, "ashiq@gmail.com");
print("Starting typing in password field");
await tester.enterText(passwordField, "123456789As@");
await tester.pumpAndSettle();
print("Clicking on sign in button");
await tester.tap(signInButton);
await tester.pumpAndSettle();
final signInMessage = find.text("Login successful");
print("Started verifying the message for successful login.");
await tester.ensureVisible(signInMessage);
await tester.pumpAndSettle(Duration(seconds: 4));
print("Successfully the success message in dashboard.");
});
});
}
Когда я выполняю этот код, он запускает автоматизацию, но выдает ошибку, и тест завершается неудачей. В то время как я запускаю это приложение вручную, таких ошибок не возникает, они возникают только при выполнении интеграционного теста.
Пожалуйста, проверьте и скажите мне, какое решение может быть для этого.
Заранее спасибо.
Комментарии:
1. Пожалуйста, добавьте исходный код, который вы тестируете, так как это будет место, где вы используете оператор проверки null для нулевого значения.
2. К сожалению, я не могу поделиться исходным кодом здесь, так как это сайт NDA. Дайте мне какое-нибудь предложение о том, где мне следует искать проблему. Нет никаких проблем при запуске приложения вручную, никаких сообщений об ошибках.
3. Это действительно делает запрос ОЧЕНЬ сложным, поэтому я хотел бы узнать, можете ли вы спросить своего работодателя/владельца кода о том, сколько вы можете опубликовать в будущем. Я постараюсь дать свой лучший ответ в ответе ниже
Ответ №1:
Похоже, проблема связана со строкой 38 вашей страницы входа в систему (при просмотре трассировки стека ошибок).
Ошибка вызвана тем, что вы используете оператор проверки !
на нуль для значения, которое было null
. Вы должны попытаться проверить наличие нулевого значения, прежде чем использовать !
. например
if(possiblyNullValue == null){
do something
} else {
do the thing you wanted with possiblyNullValue
}
Компилятор поможет вам в этом случае, так как ваш код больше не должен нуждаться в !
операторе, если вы проверите возможность null
. (должна появиться желтая линия под вашим !
сообщением, что она вам больше не нужна)