访问抖动测试会导致tearDownAll

时间:2020-09-25 13:27:38

标签: flutter dart flutter-test flutterdriver

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

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

我研究了InvokerDeclarerEngineLiveTestControllertest_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()函数中使用它。

1 个答案:

答案 0 :(得分: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
  }
});