android - 使用颤振小部件测试测试接收意图
问题描述
我有一个小的颤振应用程序,它在文本小部件中显示传入的共享操作,也就是意图。接收部分是这样的:
class MyAppState extends State<MyApp> {
@override
void initState() {
ReceiveSharingIntent.getInitialText().then((String value) {
if (value == null) return;
print("got intent " + value);
add_to_widget (value) ;
});
ReceiveSharingIntent.getTextStream().listen((String value) {
print("got intent " + value);
add_to_widget (value) ;
});
}
当我在 android 虚拟设备上运行代码时,意图被正确收集并且文本显示在小部件中,所以我想我的 AndroidManifest.xml 正确:
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/*" />
</intent-filter>
但我想用flutter_test中的小部件测试器自动测试它,如下所示:
void main() {
testWidgets('receive intent ', (WidgetTester tester) async {
await tester.pumpWidget(MyApp());
// the missing bit
await fire_share_action ('hello_intent') ;
expect (find.text('hello_intent'), findsOneWidget) ;
});
}
如您所见,缺少的部分是 fire_share_action 的内容。我尝试触发类似https://pub.dev/packages/intent中的意图,但是,尽管没有任何错误或异常,但没有像我在 avd 中运行时那样打印意图,也没有期望通过。
我有一种我错过了什么的感觉。测试意图的接收应该是一件基本的事情,对吧?
我很确定将 android 代码放入fire_share_action(就像我所做的那样)是错误的方式,但是 - 我还能怎么做呢?如何从“testWidgets”内部向我的应用发送 Intent?还是我必须创建一个模拟接收器来进行三明治测试?我不想进入flutter_driver,也不想进入unit_test;小部件测试是我的方式,因为它们提供了快速周转和可靠性之间的中间立场。
我搞砸了几天的编码,非常沮丧。尽管有大量关于在 Flutter 应用程序中发送和接收 Intent 的文献,但我没有发现任何关于测试Intent接收的内容,更不用说测试发送Intent 了 ……
任何想法?