集成测试“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
测试在调试模式下通过,但在配置文件或发布模式下未通过。即使输入有焦点,调用 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