如何在Flutter中使用compute()测试功能?

时间:2020-09-29 22:05:17

标签: unit-testing flutter dart dart-isolates

我正在尝试使用compute()函数测试异步方法,但是当我通过Android Studio运行test('Compute test')时,它并没有完成,仅打印了“开始测试”。

使用以下命令运行测试:

../bin/flutter --no-color test --machine --start-paused --plain-name "Compute test" test/test_compute.dart

测试类:

import 'package:flutter/foundation.dart';
import 'package:flutter_test/flutter_test.dart';

int testCompute(int value) {
  print('Test compute');
  return value + 1;
}

void main() {
  test('Compute test', () async {
    print('Start test');
    int result = await compute(testCompute, 0);
    print('End test: $result');
  });
}

2 个答案:

答案 0 :(得分:0)

要正常工作,应该在没有--start_paused参数的情况下运行测试。

答案 1 :(得分:0)

Google 的某个人说您需要使用 runAsync() 运行测试。

void main() {
  testWidgets('compute', (WidgetTester tester) async {
    dynamic data = await tester.runAsync(() => parseData('[1]'));
    print(data);
  });
}

Future<dynamic> parseData(String str) => compute(parseJson, str);

dynamic parseJson(String str) {
  return json.decode(str);
}

来源:https://github.com/flutter/flutter/issues/35484#issuecomment-517931625