【问题标题】:Flutter driver interacting with native elementsFlutter 驱动程序与原生元素交互
【发布时间】:2019-08-24 04:00:52
【问题描述】:

我很难使用 Flutter Driver 进行测试,我认为这可能是一个限制,问题是因为我无法与原生元素交互,我的意思是,我正在使用 Google 进行登录,并且在通话后iOS 上的一个功能,它显示一个确认登录的对话框

但是在集成测试中我不知道如何与之交互

final buttonLoginFinder = find.byValueKey('login_button');
final buttonContinueFinder = find.text('Continue');
// ...

await driver.tap(buttonLoginFinder);
await driver.waitFor(buttonContinueFinder);
await driver.tap(buttonContinueFinder);

【问题讨论】:

  • 不幸的是,目前无法通过 Flutter Driver 与此类对话框进行交互。对于 Android 设备,您至少可以尝试使用 ADB 进行一些解决方法,但是在快速搜索之后,使用 iOS/Xcode 开发人员工具很可能无法实现。 Github 上的某种相关问题(我认为可能是你的 :-))--> github.com/flutter/flutter/issues/12561
  • 谢谢 :) @Wazniak

标签: ios flutter flutter-test


【解决方案1】:

在我看来,这不是测试您的应用程序的正确方法。 Google 登录应该被视为一个黑匣子。 因此,在集成测试期间,应该对其进行模拟,并在尝试登录时仅返回真/假,而无需特定的对话交互。 通过这种方式,您可以假设 Google Sign In as 第三方库正常工作,并跳过外部组件的集成测试。

【讨论】:

  • IMO 这是一个很好的提示。您应该在开始测试时设置一个标志。 (MyApp.IS_TEST_RUN = true;) 在您的代码中,您应该检查测试是否正在运行。我有一项服务正在尝试访问我的位置(= 本机权限对话框)。在此服务中,我添加了这些行“ if (MyApp.IS_TEST_RUN){return defaultPosition;}”。你也可以使用 mockito 之类的东西,这样你就不必接触你的应用代码了。
猜你喜欢
  • 2021-08-26
  • 2010-11-03
  • 1970-01-01
  • 1970-01-01
  • 2021-01-20
  • 1970-01-01
  • 2020-10-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多