集成测试“enterText”方法不适用于配置文件或发布模式

Integration test `enterText` method not working on profile or release mode

测试在调试模式下通过,但在配置文件或发布模式下未通过。即使输入有焦点,调用 enterText 时也不会输入文本。在调试模式下,它可以毫无问题地输入文本。

这是 integration-tests 在调试与配置文件或发布中的工作方式之间的一个 issue, or more exactly a difference

TLDR

基本上,如果您未处于调试模式,则必须调用 binding.testTextInput.register() 才能使 tester.enterText 正常工作。

  final binding = IntegrationTestWidgetsFlutterBinding.ensureInitialized() as IntegrationTestWidgetsFlutterBinding;

// Necessary for being able to enterText when not in debug mode 
  binding.testTextInput.register();

这将允许在集成测试期间调用 enterText。 作为 caveat 这将在测试期间禁止使用真实键盘,但大多数时候情况并非如此。

为什么会这样?

因为在调试模式下,这是通过断言允许的,而断言不适用于配置文件或发布模式。 See source code