gpt4 book ai didi

testing - 如何修复由 get_version 插件引起的 MissingPluginException (package_info)?

转载 作者:行者123 更新时间:2023-12-03 02:43:27 25 4
gpt4 key购买 nike

我有一个 flutter 应用程序,我正在编写一个测试用例,将应用程序的当前版本与可用的最新版本进行比较。该函数仅获取 currentVersion 和 latestVersion 的值,并根据 currentVersion<=latestVersion 是否返回 true 或 false。

我正在使用 get_version 插件来提取应用程序的当前版本。出于测试目的,LatestVersion 的值比该值高 1。

这个相同的调用适用于应用程序的其余部分。它仅在测试用例中产生问题。

我尝试从 0.0.8 升级到 0.1.0 但徒劳无功。

    void main() {
test('checkAppVersion', () async {
String currentVersion = await GetVersion.projectVersion;


expect(
checkAppVersionTest(
Version.parse(currentVersion), Version.parse(latestVersion)),
true);


});
}

bool checkAppVersionTest(Version currentVersion, Version latestVersion) { bool updateRequired = false;
if (currentVersion < latestVersion) {
updateRequired = true;
}
return updateRequired;
}

我收到以下错误:

MissingPluginException(No implementation found for method getAll on channel plugins.flutter.io/package_info) package:flutter/src/services/platform_channel.dart 300:7 MethodChannel.invokeMethod ===== asynchronous gap =========================== dart:async _AsyncAwaitCompleter.completeError package:flutter/src/services/platform_channel.dart MethodChannel.invokeMethod ===== asynchronous gap =========================== dart:async _asyncThenWrapperHelper package:flutter/src/services/platform_channel.dart MethodChannel.invokeMethod package:package_info/package_info.dart 38:17 PackageInfo.fromPlatform



当我对 currentVersion 值进行硬编码时工作正常。

请提出解决这个问题的方法。

最佳答案

我假设您正在使用 Android Studio 或类似软件并单击“播放”按钮来运行您的测试。
我试过这个,得到了和你一样的结果。
但是,通过单击此按钮,测试实际上并未在设备上运行 - 这是插件所需的,因此通过从终端运行它并指定文件 - 它似乎运行良好:

flutter run test.dart

您需要在 main() 的第一行添加以下内容,否则您将收到不同的错误:
TestWidgetsFlutterBinding.ensureInitialized();

最终代码:
import 'package:flutter_test/flutter_test.dart';
import 'package:get_version/get_version.dart';
import 'package:pub_semver/pub_semver.dart';

void main() {
TestWidgetsFlutterBinding.ensureInitialized();

test('checkAppVersion', () async {
String currentVersion = await GetVersion.projectVersion;
String latestVersion = '0.0.1';
expect(checkAppVersionTest(Version.parse(currentVersion), Version.parse(latestVersion)), false);
});
}

bool checkAppVersionTest(Version currentVersion, Version latestVersion) {
bool updateRequired = false;
if (currentVersion < latestVersion) {
updateRequired = true;
}
return updateRequired;
}

如果有人在正常运行您的应用程序时遇到类似问题,请尝试终止您的应用程序并运行 flutter clean在终端。

关于testing - 如何修复由 get_version 插件引起的 MissingPluginException (package_info)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55595718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com