访问颤振测试导致 tearDownAll

Posted

技术标签:

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

我需要在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】:

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

基本上你必须检查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
  
);

【讨论】:

以上是关于访问颤振测试导致 tearDownAll的主要内容,如果未能解决你的问题,请参考以下文章

颤振从单元\小部件测试调用http请求而不进行模拟

命令“颤振:新项目”导致错误(找不到命令“颤振.createProject”),我无法在 VSCODE 上调试颤振项目

颤振图像处理导致像素化

颤振测试“FrameTimingSummarizer”错误

可视化用于颤振测试(或颤振驱动程序)的敲击/手势

颤振测试失败。找不到编译器错误获取器'main'