Flutter,flutter_localization和测试(如果我尝试模拟本地化,则只能通过一项测试)

时间:2020-02-28 14:11:44

标签: unit-testing flutter localization

我写了一个简单的项目来解决我的问题

https://gist.github.com/imigalkin/5ecddacec27e160d0017a63d4a14a1b0

如果我在该项目中单独运行测试,则它们会通过。但是,如果我尝试运行所有测试,则第二项测试将失败。我做错了什么?

颤抖的医生:

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, v1.12.13+hotfix.8, on Mac OS X 10.15.3 19D76, locale en-GB)

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
[✓] Xcode - develop for iOS and macOS (Xcode 11.3)
[✓] Android Studio (version 3.5)
[✓] VS Code (version 1.42.1)
[!] Connected device
    ! No devices available

错误:

00:03 +1: two
══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞════════════════════════════════════════════════════
The following TestFailure object was thrown running a test:
  Expected: exactly one matching node in the widget tree
  Actual: _TextFinder:<zero widgets with text "HOME" (ignoring offstage widgets)>
   Which: means none were found but one was expected

When the exception was thrown, this was the stack:
#4      main.<anonymous closure> (file:///Volumes/data/code/flutter/_learn/try_widget_tests/test/widget_test.dart:49:5)
<asynchronous suspension>
#5      testWidgets.<anonymous closure>.<anonymous closure> (package:flutter_test/src/widget_tester.dart:124:25)
#6      TestWidgetsFlutterBinding._runTestBody (package:flutter_test/src/binding.dart:696:19)
<asynchronous suspension>
#9      TestWidgetsFlutterBinding._runTest (package:flutter_test/src/binding.dart:679:14)
#10     AutomatedTestWidgetsFlutterBinding.runTest.<anonymous closure> (package:flutter_test/src/binding.dart:1050:24)
#16     AutomatedTestWidgetsFlutterBinding.runTest (package:flutter_test/src/binding.dart:1047:15)
#17     testWidgets.<anonymous closure> (package:flutter_test/src/widget_tester.dart:121:22)
#18     Declarer.test.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:test_api/src/backend/declarer.dart:171:27)
<asynchronous suspension>
#19     Invoker.waitForOutstandingCallbacks.<anonymous closure> (package:test_api/src/backend/invoker.dart:242:15)
#24     Invoker.waitForOutstandingCallbacks (package:test_api/src/backend/invoker.dart:239:5)
#25     Declarer.test.<anonymous closure>.<anonymous closure> (package:test_api/src/backend/declarer.dart:169:33)
#30     Declarer.test.<anonymous closure> (package:test_api/src/backend/declarer.dart:168:13)
#31     Invoker._onRun.<anonymous closure>.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:test_api/src/backend/invoker.dart:392:25)
#45     _Timer._runTimers (dart:isolate-patch/timer_impl.dart:384:19)
#46     _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:418:5)
#47     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:174:12)
(elided 28 frames from class _FakeAsync, package dart:async, package dart:async-patch, and package stack_trace)

This was caught by the test expectation on the following line:
  file:///Volumes/data/code/flutter/_learn/try_widget_tests/test/widget_test.dart line 49
The test description was:
  two
════════════════════════════════════════════════════════════════════════════════════════════════════
00:03 +1 -1: two [E]
  Test failed. See exception logs above.
  The test description was: two

00:03 +1 -1: Some tests failed.

1 个答案:

答案 0 :(得分:0)

您只需要加载本地化异步。

以下是相关的参考参考:https://github.com/flutter/flutter/issues/22193