【问题标题】:Access flutter tests result in tearDownAll访问颤振测试导致 tearDownAll
【发布时间】:2021-01-11 20:19:52
【问题描述】:

我需要在tearDownAll 回调中访问测试结果。我想检查执行过程中是否有任何测试失败。

tearDownAll(() async {
  final success = // code here
});

我研究了 Invoker、Declarer、Engine、LiveTestController 和 test_core.dart 文件等类。似乎这是我需要的代码。

var success = await runZoned(() => Invoker.guard(engine.run),
    zoneValues: {#test.declarer: _globalDeclarer});
if (success) return null;
print('');
unawaited(Future.error('Dummy exception to set exit code.'));

不幸的是,engine 无法从外部访问。我也没有在test_core 库中找到用于检查测试结果的 API。

有没有办法检查以前的测试是否失败?我想在测试组的tearDownAll() 或test() 函数中使用它。

【问题讨论】:

    标签: flutter dart flutter-test flutterdriver


    【解决方案1】:

    我为我的问题找到了一个可能的解决方案,这需要在测试类中添加一些额外的东西。

    基本上你必须检查tearDown中的每一个测试结果并跟踪它们,然后在tearDownAll中你可以检查是否有任何测试失败。

    import 'package:test_api/src/backend/invoker.dart';
    import 'package:test_api/src/backend/state.dart' as test_api;
    
    final failedTests = [];
    
    tearDown(() {
      if (Invoker.current.liveTest.state.result == test_api.Result.error) {
        failedTests.add(Invoker.current.liveTest.individualName);
      }
    });
    
    tearDownAll(() {
      if (failedTests.isNotEmpty) {
        // do stuff
      }
    });
    

    【讨论】:

      猜你喜欢
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 2020-12-04
      • 2020-05-10
      • 2019-07-01
      • 2021-05-26
      • 2019-06-08
      • 2023-01-12
      相关资源
      最近更新 更多