Интеграционный тест флаттера вызывает ошибку «оператор проверки на нуль, используемый для нулевого значения»

#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 . (должна появиться желтая линия под вашим ! сообщением, что она вам больше не нужна)