diff --git a/pkg/analyzer/lib/src/error/best_practices_verifier.dart b/pkg/analyzer/lib/src/error/best_practices_verifier.dart
index c2c568d..21460b7 100644
--- a/pkg/analyzer/lib/src/error/best_practices_verifier.dart
+++ b/pkg/analyzer/lib/src/error/best_practices_verifier.dart
@@ -367,7 +367,9 @@
 
   @override
   void visitExpressionFunctionBody(ExpressionFunctionBody node) {
-    _checkForReturnOfDoNotStore(node.expression);
+    if (!_invalidAccessVerifier._inTestDirectory) {
+      _checkForReturnOfDoNotStore(node.expression);
+    }
     super.visitExpressionFunctionBody(node);
   }
 
@@ -406,8 +408,9 @@
               field.name,
               [field.name, overriddenElement!.enclosingElement.name]);
         }
-
-        _checkForAssignmentOfDoNotStore(field.initializer);
+        if (!_invalidAccessVerifier._inTestDirectory) {
+          _checkForAssignmentOfDoNotStore(field.initializer);
+        }
       }
     } finally {
       _deprecatedVerifier.popInDeprecated();
@@ -678,8 +681,10 @@
   void visitTopLevelVariableDeclaration(TopLevelVariableDeclaration node) {
     _deprecatedVerifier.pushInDeprecatedMetadata(node.metadata);
 
-    for (var decl in node.variables.variables) {
-      _checkForAssignmentOfDoNotStore(decl.initializer);
+    if (!_invalidAccessVerifier._inTestDirectory) {
+      for (var decl in node.variables.variables) {
+        _checkForAssignmentOfDoNotStore(decl.initializer);
+      }
     }
 
     try {
diff --git a/pkg/analyzer/test/src/diagnostics/assignment_of_do_not_store_test.dart b/pkg/analyzer/test/src/diagnostics/assignment_of_do_not_store_test.dart
index 27f94c8..56b086d 100644
--- a/pkg/analyzer/test/src/diagnostics/assignment_of_do_not_store_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/assignment_of_do_not_store_test.dart
@@ -10,11 +10,45 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(AssignmentOfDoNotStoreTest);
+    defineReflectiveTests(AssignmentOfDoNotStoreInTestsTest);
   });
 }
 
 @reflectiveTest
+class AssignmentOfDoNotStoreInTestsTest extends PubPackageResolutionTest {
+  @override
+  void setUp() {
+    super.setUp();
+    writeTestPackageConfigWithMeta();
+  }
+
+  test_noHintsInTestDir() async {
+    // Code that is in a test dir (the default for PubPackageResolutionTests)
+    // should not trigger the hint.
+    // (See:https://github.com/dart-lang/sdk/issues/45594)
+    await assertNoErrorsInCode(
+      '''
+import 'package:meta/meta.dart';
+
+class A {
+  @doNotStore
+  String get v => '';
+}
+
+class B {
+  String f = A().v;
+}
+''',
+    );
+  }
+}
+
+@reflectiveTest
 class AssignmentOfDoNotStoreTest extends PubPackageResolutionTest {
+  /// Override the default which is in .../test and should not trigger hints.
+  @override
+  String get testPackageRootPath => '$workspaceRootPath/test_project';
+
   @override
   void setUp() {
     super.setUp();
diff --git a/pkg/analyzer/test/src/diagnostics/return_of_do_not_store_test.dart b/pkg/analyzer/test/src/diagnostics/return_of_do_not_store_test.dart
index ec72a74..4ec91f6 100644
--- a/pkg/analyzer/test/src/diagnostics/return_of_do_not_store_test.dart
+++ b/pkg/analyzer/test/src/diagnostics/return_of_do_not_store_test.dart
@@ -10,11 +10,44 @@
 main() {
   defineReflectiveSuite(() {
     defineReflectiveTests(ReturnOfDoNotStoreTest);
+    defineReflectiveTests(ReturnOfDoNotStoreInTestsTest);
   });
 }
 
 @reflectiveTest
+class ReturnOfDoNotStoreInTestsTest extends PubPackageResolutionTest {
+  @override
+  void setUp() {
+    super.setUp();
+    writeTestPackageConfigWithMeta();
+  }
+
+  test_noHintsInTestDir() async {
+    // Code that is in a test dir (the default for PubPackageResolutionTests)
+    // should not trigger the hint.
+    // (See:https://github.com/dart-lang/sdk/issues/45594)
+    await assertNoErrorsInCode(
+      '''
+import 'package:meta/meta.dart';
+
+@doNotStore
+String _v = '';
+
+String f() {
+  var v = () => _v;
+  return v();
+}
+''',
+    );
+  }
+}
+
+@reflectiveTest
 class ReturnOfDoNotStoreTest extends PubPackageResolutionTest {
+  /// Override the default which is in .../test and should not trigger hints.
+  @override
+  String get testPackageRootPath => '$workspaceRootPath/test_project';
+
   @override
   void setUp() {
     super.setUp();
diff --git a/tools/VERSION b/tools/VERSION
index bcb0d00..2c09787e 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 14
 PATCH 0
-PRERELEASE 10
+PRERELEASE 11
 PRERELEASE_PATCH 0
\ No newline at end of file
