Tests throw an exception
Open
expilu
opened this issue 5 years ago
โข
8 comments
๐ Bug Report
The plugin throws an exception when doing tests with testWidgets. The tests don't fail as the exception is thrown after it completes. But it leaves a lot of console spam like this:
`โโโก EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
The following MissingPluginException was thrown running a test (but after the test had completed):
MissingPluginException(No implementation found for method getDatabasesPath on channel
com.tekartik.sqflite)
When the exception was thrown, this was the stack:
#0 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:154:7)
#1 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:329:12)
#2 invokeMethod (package:sqflite/src/sqflite_impl.dart:17:13)
#3 SqfliteDatabaseFactoryImpl.invokeMethod (package:sqflite/src/factory_impl.dart:82:7)
#4 SqfliteDatabaseFactoryMixin.safeInvokeMethod. (package:sqflite_common/src/factory_mixin.dart:25:35)
#5 wrapDatabaseException (package:sqflite/src/exception_impl.dart:7:32)
#6 SqfliteDatabaseFactoryImpl.wrapDatabaseException (package:sqflite/src/factory_impl.dart:78:7)
#7 SqfliteDatabaseFactoryMixin.safeInvokeMethod (package:sqflite_common/src/factory_mixin.dart:25:7)
#8 SqfliteDatabaseFactoryMixin.getDatabasesPath (package:sqflite_common/src/factory_mixin.dart:143:26)
#9 getDatabasesPath (package:sqflite/sqflite.dart:168:54)
#10 CacheStore._getObjectProvider (package:flutter_cache_manager/src/cache_store.dart:43:33)
#11 new CacheStore (package:flutter_cache_manager/src/cache_store.dart:39:49)
#12 BaseCacheManager.createCacheStore (package:flutter_cache_manager/src/cache_manager.dart:263:12)
#13 new BaseCacheManager (package:flutter_cache_manager/src/cache_manager.dart:84:28)
#14 new DefaultCacheManager. (package:flutter_cache_manager/src/cache_manager.dart:40:29)
#15 new DefaultCacheManager (package:flutter_cache_manager/src/cache_manager.dart:36:39)
#16 CachedNetworkImageState._cacheManager (package:cached_network_image/src/cached_image_widget.dart:404:35)
#17 CachedNetworkImageState._createFileStream (package:cached_network_image/src/cached_image_widget.dart:242:19)
#18 CachedNetworkImageState.initState (package:cached_network_image/src/cached_image_widget.dart:219:5)
#19 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4640:58)
#20 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4476:5)
... Normal element mounting (39 frames)
#59 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3446:14)
#60 MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5947:32)
... Normal element mounting (36 frames)
#96 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3446:14)
#97 Element.updateChild (package:flutter/src/widgets/framework.dart:3214:18)
#98 SliverMultiBoxAdaptorElement.updateChild (package:flutter/src/widgets/sliver.dart:1162:36)
#99 SliverMultiBoxAdaptorElement.createChild. (package:flutter/src/widgets/sliver.dart:1147:20)
#100 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2607:19)
#101 SliverMultiBoxAdaptorElement.createChild (package:flutter/src/widgets/sliver.dart:1140:11)
#102 RenderSliverMultiBoxAdaptor._createOrObtainChild. (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:354:23)
#103 RenderObject.invokeLayoutCallback. (package:flutter/src/rendering/object.dart:1866:58)
#104 PipelineOwner._enableMutationsToDirtySubtrees (package:flutter/src/rendering/object.dart:918:15)
#105 RenderObject.invokeLayoutCallback (package:flutter/src/rendering/object.dart:1866:13)
#106 RenderSliverMultiBoxAdaptor._createOrObtainChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:343:5)
#107 RenderSliverMultiBoxAdaptor.addInitialChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:427:5)
#108 RenderSliverFixedExtentBoxAdaptor.performLayout (package:flutter/src/rendering/sliver_fixed_extent_list.dart:197:12)
#109 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#110 RenderSliverEdgeInsetsPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:135:11)
#111 _RenderSliverFractionalPadding.performLayout (package:flutter/src/widgets/sliver_fill.dart:168:11)
#112 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#113 RenderViewportBase.layoutChildSequence (package:flutter/src/rendering/viewport.dart:452:13)
#114 RenderViewport._attemptLayout (package:flutter/src/rendering/viewport.dart:1444:12)
#115 RenderViewport.performLayout (package:flutter/src/rendering/viewport.dart:1353:20)
#116 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#117 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#118 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#119 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#120 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#121 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#122 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#123 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#124 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#125 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#126 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#127 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#128 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#129 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#130 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#131 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#132 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#133 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#134 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#135 RenderStack.performLayout (package:flutter/src/rendering/stack.dart:556:15)
#136 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#137 RenderConstrainedBox.performLayout (package:flutter/src/rendering/proxy_box.dart:266:13)
#138 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#139 RenderFlex.performLayout (package:flutter/src/rendering/flex.dart:746:15)
#140 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#141 _RenderSingleChildViewport.performLayout (package:flutter/src/widgets/single_child_scroll_view.dart:512:13)
#142 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#143 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#144 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#145 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#146 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#147 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#148 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#149 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#150 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#151 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#152 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#153 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#154 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#155 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#156 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#157 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#158 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#159 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#160 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#161 MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:171:11)
#162 _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:484:7)
#163 MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:240:7)
#164 RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:399:14)
#165 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#166 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#167 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#168 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#169 _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1248:11)
#170 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#171 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#172 RenderObject.layout (package:flutter/src/rendering/object.dart:1767:7)
#173 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:111:13)
#174 RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:1630:7)
#175 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:887:18)
#176 AutomatedTestWidgetsFlutterBinding.drawFrame (package:flutter_test/src/binding.dart:1009:23)
#177 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:284:5)
#178 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1113:15)
#179 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1052:9)
#180 AutomatedTestWidgetsFlutterBinding.pump. (package:flutter_test/src/binding.dart:879:9)
#183 TestAsyncUtils.guard (package:flutter_test/src/test_async_utils.dart:72:41)
#184 AutomatedTestWidgetsFlutterBinding.pump (package:flutter_test/src/binding.dart:866:27)
#185 WidgetTester.pumpAndSettle. (package:flutter_test/src/widget_tester.dart:542:23)
#186 WidgetTester.pumpAndSettle. (package:flutter_test/src/widget_tester.dart:537:39)
#189 TestAsyncUtils.guard (package:flutter_test/src/test_async_utils.dart:72:41)
#190 WidgetTester.pumpAndSettle (package:flutter_test/src/widget_tester.dart:537:27)
#191 main.... (file:///C:/code/baltics-flutter/test/product_screen_test.dart:46:24)
(elided 16 frames from dart:async and package:stack_trace)`
Expected behavior
To not throw an exception when used on tests.
Reproduction steps
Just add a CachedNetworkImage to a widget and write a test for it with testWidgets.
Configuration
Platform:
[X] :iphone: iOS
[X] :robot: Android
In my case, the test fails.
Maybe because I'm doing golden testing.
await expectLater(
find.byType(MyWidgetUsingCachedNetWorkImage),
matchesGoldenFile('main.png'),
);
I have exact same problem with widget tests while using CachedNetworkImage widget.
This blog post might help: https://medium.com/flutter-community/golden-testing-using-cachednetworkimage-1b488c653af3
followed that blog post but still getting issue, seems base class is trying to create http client.
Tried calling: printOnFailure("Warning: At least one test in this suite creates an HttpClient. When\nrunning a test suite that uses TestWidgetsFlutterBinding, all HTTP\nrequests will return status code 400, and no network request will\nactually be made. Any test expecting a real network connection and\nstatus code will fail.\nTo test code that needs an HttpClient, provide your own HttpClient\nimplementation to the code under test, so that your test can\nconsistently provide a testable response to the code under test.")
package:test_api printOnFailure
package:flutter_test/src/_binding_io.dart 83:7 _MockHttpOverrides.createHttpClient
dart:_http new HttpClient
package:http/src/io_client.dart 23:52 new IOClient
package:http/src/io_client.dart 16:30 createClient
package:http/src/client.dart 35:23 new Client
package:flutter_cache_manager/src/web/file_service.dart 24:38 new HttpFileService
package:flutter_cache_manager/src/web/web_helper.dart 24:39 new WebHelper
package:flutter_cache_manager/src/cache_manager.dart 91:31 new BaseCacheManager
custom_cache_manager.dart 9:9 new TestCacheManager
hmm seems to work if add the GetIt call inside a setUpAll method in the test. Still having test hang however but suspect that is probably due to using it with golden_toolkit.
I have exact same problem with widget tests while using CachedNetworkImage widget.
me too.
Because cached_network_image >=3.2.0 depends on flutter_cache_manager ^3.3.0 which depends on sqflite ^2.0.0+3, cached_network_image >=3.2.0 requires sqflite from hosted.
So, because app depends on both cached_network_image ^3.2.1 and sqflite from git, version solving failed.
i faced this error plz any one help me
ไฝ ๅฅฝ๏ผ้ฎไปถๅทฒ็ปๆถๅฐ๏ผ่ฐข่ฐข