我有一个不稳定的应用程序,我正在编写一个测试用例,将应用程序的currentVersion与可用的LatestVersion进行比较。该函数仅获取currentVersion和LatestVersion的值,并根据currentVersion <= latestVersion是否返回true或false。
我正在使用get_version插件提取应用程序的currentVersion。 LatestVersion的值比用于测试目的的值大。
此调用在应用程序的其余部分中有效。它只会在测试用例中产生问题。
我尝试从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(在通道plugins.flutter.io/package_info上未找到方法getAll的实现) 软件包:flutter / src / services / platform_channel.dart 300:7 MethodChannel.invokeMethod =====异步间隙=========================== dart:async _AsyncAwaitCompleter.completeError 软件包:flutter / src / services / platform_channel.dart MethodChannel.invokeMethod =====异步间隙=========================== dart:async _asyncThenWrapperHelper 软件包:flutter / src / services / platform_channel.dart MethodChannel.invokeMethod package:package_info / package_info.dart 38:17 PackageInfo.fromPlatform
当我对currentVersion值进行硬编码时,效果很好。
请提出解决方法。
答案 0 :(得分:0)
我假设您使用的是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
在终端中。