Let tests mock the list of feature flags
diff --git a/packages/flutter_tools/lib/src/commands/config.dart b/packages/flutter_tools/lib/src/commands/config.dart
index dac09a2..9778141 100644
--- a/packages/flutter_tools/lib/src/commands/config.dart
+++ b/packages/flutter_tools/lib/src/commands/config.dart
@@ -67,7 +67,7 @@
       hide: !verboseHelp,
       help: 'Print config values as json.',
     );
-    for (final Feature feature in allFeatures) {
+    for (final Feature feature in featureFlags.allFeatures) {
       final String? configSetting = feature.configSetting;
       if (configSetting == null) {
         continue;
@@ -132,7 +132,7 @@
     }
 
     if (boolArg('clear-features')) {
-      for (final Feature feature in allFeatures) {
+      for (final Feature feature in featureFlags.allFeatures) {
         final String? configSetting = feature.configSetting;
         if (configSetting != null) {
           globals.config.removeValue(configSetting);
@@ -188,7 +188,7 @@
       _updateConfig('build-dir', buildDir);
     }
 
-    for (final Feature feature in allFeatures) {
+    for (final Feature feature in featureFlags.allFeatures) {
       final String? configSetting = feature.configSetting;
       if (configSetting == null) {
         continue;
@@ -247,14 +247,14 @@
   String get settingsText {
     final Map<String, Feature> featuresByName = <String, Feature>{};
     final String channel = globals.flutterVersion.channel;
-    for (final Feature feature in allFeatures) {
+    for (final Feature feature in featureFlags.allFeatures) {
       final String? configSetting = feature.configSetting;
       if (configSetting != null) {
         featuresByName[configSetting] = feature;
       }
     }
     final Set<String> keys = <String>{
-      ...allFeatures.map((Feature e) => e.configSetting).whereType<String>(),
+      ...featureFlags.allFeatures.map((Feature e) => e.configSetting).whereType<String>(),
       ...globals.config.keys,
     };
     final Iterable<String> settings = keys.map<String>((String key) {
diff --git a/packages/flutter_tools/lib/src/features.dart b/packages/flutter_tools/lib/src/features.dart
index d548d2b..c1c3d4a 100644
--- a/packages/flutter_tools/lib/src/features.dart
+++ b/packages/flutter_tools/lib/src/features.dart
@@ -60,28 +60,28 @@
   ///
   /// Prefer using one of the specific getters above instead of this API.
   bool isEnabled(Feature feature);
-}
 
-/// All current Flutter feature flags.
-const List<Feature> allFeatures = <Feature>[
-  flutterWebFeature,
-  flutterLinuxDesktopFeature,
-  flutterMacOSDesktopFeature,
-  flutterWindowsDesktopFeature,
-  flutterAndroidFeature,
-  flutterIOSFeature,
-  flutterFuchsiaFeature,
-  flutterCustomDevicesFeature,
-  cliAnimation,
-  nativeAssets,
-  swiftPackageManager,
-];
+  /// All current Flutter feature flags.
+  List<Feature> get allFeatures => const <Feature>[
+    flutterWebFeature,
+    flutterLinuxDesktopFeature,
+    flutterMacOSDesktopFeature,
+    flutterWindowsDesktopFeature,
+    flutterAndroidFeature,
+    flutterIOSFeature,
+    flutterFuchsiaFeature,
+    flutterCustomDevicesFeature,
+    cliAnimation,
+    nativeAssets,
+    swiftPackageManager,
+  ];
+}
 
 /// All current Flutter feature flags that can be configured.
 ///
 /// [Feature.configSetting] is not `null`.
 Iterable<Feature> get allConfigurableFeatures =>
-    allFeatures.where((Feature feature) => feature.configSetting != null);
+    featureFlags.allFeatures.where((Feature feature) => feature.configSetting != null);
 
 /// The [Feature] for flutter web.
 const Feature flutterWebFeature = Feature.fullyEnabled(
diff --git a/packages/flutter_tools/lib/src/flutter_features.dart b/packages/flutter_tools/lib/src/flutter_features.dart
index a55f54c..79253c1 100644
--- a/packages/flutter_tools/lib/src/flutter_features.dart
+++ b/packages/flutter_tools/lib/src/flutter_features.dart
@@ -61,7 +61,7 @@
   bool get isExplicitPackageDependenciesEnabled => true;
 }
 
-interface class FlutterFeatureFlags with FlutterFeatureFlagsIsEnabled implements FeatureFlags {
+interface class FlutterFeatureFlags extends FeatureFlags with FlutterFeatureFlagsIsEnabled {
   FlutterFeatureFlags({
     required FlutterVersion flutterVersion,
     required FlutterFeaturesConfig featuresConfig,
diff --git a/packages/flutter_tools/lib/src/reporting/unified_analytics.dart b/packages/flutter_tools/lib/src/reporting/unified_analytics.dart
index 1d490e3..a21be16 100644
--- a/packages/flutter_tools/lib/src/reporting/unified_analytics.dart
+++ b/packages/flutter_tools/lib/src/reporting/unified_analytics.dart
@@ -62,7 +62,7 @@
 /// Uses the [Config] object to get enabled features.
 String? getEnabledFeatures(Config config) {
   // Create string with all enabled features to send as user property
-  final Iterable<Feature> enabledFeatures = allFeatures.where((Feature feature) {
+  final Iterable<Feature> enabledFeatures = featureFlags.allFeatures.where((Feature feature) {
     final String? configSetting = feature.configSetting;
     return configSetting != null && config.getValue(configSetting) == true;
   });
diff --git a/packages/flutter_tools/lib/src/reporting/usage.dart b/packages/flutter_tools/lib/src/reporting/usage.dart
index 397552a..bdcbac5 100644
--- a/packages/flutter_tools/lib/src/reporting/usage.dart
+++ b/packages/flutter_tools/lib/src/reporting/usage.dart
@@ -191,7 +191,7 @@
       );
       // For each flutter experimental feature, record a session value in a comma
       // separated list.
-      final String enabledFeatures = allFeatures
+      final String enabledFeatures = featureFlags.allFeatures
           .where((Feature feature) {
             final String? configSetting = feature.configSetting;
             return configSetting != null && globals.config.getValue(configSetting) == true;
diff --git a/packages/flutter_tools/test/commands.shard/hermetic/config_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/config_test.dart
index 1874565..2a061d0 100644
--- a/packages/flutter_tools/test/commands.shard/hermetic/config_test.dart
+++ b/packages/flutter_tools/test/commands.shard/hermetic/config_test.dart
@@ -54,7 +54,7 @@
       expect(
         testLogger.statusText,
         'All Settings:\n'
-        '${allFeatures.where((Feature e) => e.configSetting != null).map((Feature e) => '  ${e.configSetting}: (Not set)').join('\n')}'
+        '${featureFlags.allFeatures.where((Feature e) => e.configSetting != null).map((Feature e) => '  ${e.configSetting}: (Not set)').join('\n')}'
         '\n\n',
       );
     });
diff --git a/packages/flutter_tools/test/general.shard/features_test.dart b/packages/flutter_tools/test/general.shard/features_test.dart
index d8fe50e..65ed19f 100644
--- a/packages/flutter_tools/test/general.shard/features_test.dart
+++ b/packages/flutter_tools/test/general.shard/features_test.dart
@@ -124,6 +124,19 @@
         FileSystem: createFsWithPubspec,
       },
     );
+
+    testUsingContext('Test feature flags match feature flags', () {
+      final FeatureFlags testFeatureFlags = TestFeatureFlags();
+
+      expect(featureFlags.allFeatures.length, equals(testFeatureFlags.allFeatures.length));
+
+      final List<String> featureNames =
+          featureFlags.allFeatures.map((Feature feature) => feature.name).toList();
+      final List<String> testFeatureNames =
+          testFeatureFlags.allFeatures.map((Feature feature) => feature.name).toList();
+
+      expect(featureNames, unorderedEquals(testFeatureNames));
+    });
   });
 
   group('Linux Destkop', () {
@@ -441,4 +454,7 @@
   bool isEnabled(Feature feature) {
     return feature == shouldInvoke;
   }
+
+  @override
+  List<Feature> get allFeatures => throw UnimplementedError();
 }
diff --git a/packages/flutter_tools/test/general.shard/unified_analytics_test.dart b/packages/flutter_tools/test/general.shard/unified_analytics_test.dart
index 0f7195a..0362b15 100644
--- a/packages/flutter_tools/test/general.shard/unified_analytics_test.dart
+++ b/packages/flutter_tools/test/general.shard/unified_analytics_test.dart
@@ -8,6 +8,7 @@
 import 'package:unified_analytics/unified_analytics.dart';
 
 import '../src/common.dart';
+import '../src/context.dart';
 import '../src/fakes.dart';
 
 void main() {
@@ -30,12 +31,12 @@
   });
 
   group('Unit testing util:', () {
-    test('getEnabledFeatures is null', () {
+    testUsingContext('getEnabledFeatures is null', () {
       final String? enabledFeatures = getEnabledFeatures(config);
       expect(enabledFeatures, isNull);
     });
 
-    testWithoutContext('getEnabledFeatures not null', () {
+    testUsingContext('getEnabledFeatures not null', () {
       config.setValue('cli-animations', true);
 
       final String? enabledFeatures = getEnabledFeatures(config);
diff --git a/packages/flutter_tools/test/integration.shard/command_output_test.dart b/packages/flutter_tools/test/integration.shard/command_output_test.dart
index 9c26e18..7b6b640 100644
--- a/packages/flutter_tools/test/integration.shard/command_output_test.dart
+++ b/packages/flutter_tools/test/integration.shard/command_output_test.dart
@@ -9,6 +9,7 @@
 import 'package:flutter_tools/src/features.dart';
 
 import '../src/common.dart';
+import '../src/context.dart';
 import 'test_utils.dart';
 
 // This test file does not use [getLocalEngineArguments] because it is testing
@@ -58,7 +59,7 @@
     expect(result.stdout, contains('Shutdown hooks complete'));
   });
 
-  testWithoutContext('flutter config --list contains all features', () async {
+  testUsingContext('flutter config --list contains all features', () async {
     final ProcessResult result = await processManager.run(<String>[flutterBin, 'config', '--list']);
 
     // contains all of the experiments in features.dart
diff --git a/packages/flutter_tools/test/src/fakes.dart b/packages/flutter_tools/test/src/fakes.dart
index fada2a4..562f541 100644
--- a/packages/flutter_tools/test/src/fakes.dart
+++ b/packages/flutter_tools/test/src/fakes.dart
@@ -548,6 +548,21 @@
       _ => false,
     };
   }
+
+  @override
+  List<Feature> get allFeatures => const <Feature>[
+    flutterWebFeature,
+    flutterLinuxDesktopFeature,
+    flutterMacOSDesktopFeature,
+    flutterWindowsDesktopFeature,
+    flutterAndroidFeature,
+    flutterIOSFeature,
+    flutterFuchsiaFeature,
+    flutterCustomDevicesFeature,
+    cliAnimation,
+    nativeAssets,
+    swiftPackageManager,
+  ];
 }
 
 class FakeOperatingSystemUtils extends Fake implements OperatingSystemUtils {