Closed dudozermaks closed 6 months ago
flutter test
does not share the same mechanism as flutter run
or flutter integration tests, thus the default template which uses cargokit does not trigger compilation of the Rust side.
One way maybe using the build.dart
mechanism, which is demonstrated in https://github.com/fzyzcjy/flutter_rust_bridge/tree/master/frb_example/dart_minimal. This is a Dart feature that will be stablized (I guess soon?). Another way may be somehow utilize flutter_test_config.dart
.
I think I have a very small knowledge in this field, but I'll try to fix this using your suggested solutions. Thanks!
You are welcome!
Hi again! I tried the first solution - and failed miserably :_). I created build.dart
, inserted everything from dart_minimal/build.dart
(including simpleBuild definition), added native_assets_cli
as a dependency, enabled native_access
feature. But I still get error after running flutter test
:
Exception: Package(s) flutter_via_integrate require the native assets feature to be enabled. Enable using `flutter config --enable-native-assets`.
package:flutter_tools/src/base/common.dart 10:3 throwToolExit
package:flutter_tools/src/native_assets.dart 238:5 nativeBuildRequired
===== asynchronous gap ===========================
package:flutter_tools/src/native_assets.dart 532:8 buildNativeAssetsSingleArchitecture
===== asynchronous gap ===========================
package:flutter_tools/src/test/test_compiler.dart 192:35 TestCompiler._onCompilationRequest
I couldn't find solution for this bug. The second (and the first, to be honest) method is just beyond my understanding of Flutter, Dart and this library. So, I think I can't help much more.
IIRC (months ago, so my memory is inaccurate) that config is available if you use master Flutter. Usually you should not do that, but since you are just running tests, it is ok to use master flutter.
Ended up using integration_test. For my use case there is no difference between this two, integration_test suited my purpose even better. Maybe we need to add this to documentation: "Use integration tests instead of usual tests"? Is there any point to use standard test over integration_test? If not, do we even need to support this feature?
Looks great!
Is there any point to use standard test over integration_test?
It may execute faster, so if you have a ton of tests it is great.
Btw, yet another way of solving it is to compile manually. For example, just create a small script like cargo build && flutter test
.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new issue.
Describe the bug
I try to make golden tests in my project and it seems like I can not initialize rust when testing.
Steps to reproduce
git clone https://github.com/fzyzcjy/flutter_rust_bridge/
(we need only frb_example/flutter_via_integrate folder)cd frb_example/flutter_via_integrate
flutter test
(see logs 1)test/widget_test.dart
like this:import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:flutter_via_integrate/main.dart'; import 'package:flutter_via_integrate/src/rust/frb_generated.dart';
void main() async { await RustLib.init();
testWidgets('Counter increments smoke test', (WidgetTester tester) async { // Build our app and trigger a frame. await tester.pumpWidget(const MyApp());
}); }
Expected behavior
No response
Generated binding code
No response
OS
Arch linux
Version of
flutter_rust_bridge_codegen
2.0.0-dev.24
Flutter info
Version of
clang++
16.0.6
Additional context
No response