28

While calling a function from unit test in Flutter (Dart), how can I find if I am running unit test or real application? I want to pass different data if it's in unit test.

AVEbrahimi
  • 17,993
  • 23
  • 107
  • 210
  • 2
    Does this answer your question? [Check if App is running in a Testing Environment](https://stackoverflow.com/questions/58407382/check-if-app-is-running-in-a-testing-environment) – Jannie Theunissen Feb 05 '21 at 14:05

2 Answers2

66

You can use the following to check if you're running a test.

Platform.environment.containsKey('FLUTTER_TEST')

Solution for web below

Note that the code above doesn't work on web as the Platform class is part of dart:io which is not available on web. An alternative solution that works for all platforms including web would be to use --dart-define build environment variable. It is available from Flutter 1.17

Example of running tests with --dart-define:

flutter drive --dart-define=testing_mode=true --target=test_driver/main.dart

In code you can check this environment variable with the following code:

const bool.fromEnvironment('testing_mode', defaultValue: false)

Not using const can lead to the variable not being read on mobile, see here.

Ovidiu
  • 8,204
  • 34
  • 45
1

The accepted answer is right but if you want to check for a testing environment without breaking your web code, you can use the universal_io package.

Platform.environment.containsKey('FLUTTER_TEST')

On the web, Platform.environment will return an empty map instead of crashing your app.

Code on the Rocks
  • 11,488
  • 3
  • 53
  • 61