我有一个不稳定的应用程序,正在编写一个测试用例,将应用程序的currentVersion与可用的LatestVersion进行比较。该函数仅获取currentVersion和LatestVersion的值,并根据currentVersion
我正在使用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;
    }

我收到以下错误:



当我对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/

10-09 22:26