为什么当我从类的方法调用它时,我的 FlutterDriver 为 null?

Why is my FlutterDriver null when i call it from a classes' method?

提问人:mrodriguezoi 提问时间:11/16/2023 更新时间:11/16/2023 访问量:28

问:

我开始学习使用 flutter 进行自动化测试,因为我想使用flutter_driver在失败的期望上截取屏幕截图,我创建了一个类,该类尝试测试并通过截屏并重新抛出失败来捕获 TestFailure。

我正在使用默认的 flutter 应用程序(带有计数器和增加它的按钮的应用程序)。

import 'package:flutter_driver/flutter_driver.dart';
import 'package:test/test.dart';
import 'dart:io';

class CustomTest {
  Function testDetails;
  String testName;
  FlutterDriver? driverr;
  CustomTest(this.testDetails, this.testName, this.driverr);
  void runTest() {
    test(testName, () async {
      try {
        await testDetails();
      } on TestFailure catch (_) {
        await takeScreenshot();
        rethrow;
      }
    });
  }

  Future<File> takeScreenshot() async {
    final List<int> pixels = await driverr!.screenshot();
    final File file = File('test_driver/results/${testName}_failure.png');
    await file.writeAsBytes(pixels);
    return file;
  }
}

void main() {
  group('Counter App', () {
    FlutterDriver? driver;
    setUpAll(() async {
      driver = await FlutterDriver.connect();
    });

    tearDownAll(() async {
      driver?.close();
    });

    final counterTextFinder = find.byValueKey('counter');
    final buttonFinder = find.byValueKey('increment');

    CustomTest test1 = CustomTest(() async {
      expect(await driver?.getText(counterTextFinder), "1");
    }, "Starts at 0", driver);
    test1.runTest();

    CustomTest test2 = CustomTest(() async {
      await driver?.tap(buttonFinder);
      expect(await driver?.getText(counterTextFinder), "2");
    }, "Increments the counter", driver);
    test2.runTest();
  });
}

但是,当我运行测试(我修改为无法测试屏幕截图)时,我收到一个 null 异常,因为驱动程序为 null。

我尝试从 takeScreenshot() 方法中提取代码并将其放在测试描述本身上,在那里它运行没有问题。

flutter automated-tests flutterdriver

评论


答: 暂无答案