diff --git a/src/csharp/Grpc.Core.Tests/NUnitMain.cs b/src/csharp/Grpc.Core.Tests/NUnitMain.cs
index 13e5b27f7bd2a0d0149d0d798e7448db84dcb350..9c1d7bf3c8ae016b080d6983a96920b85759e977 100644
--- a/src/csharp/Grpc.Core.Tests/NUnitMain.cs
+++ b/src/csharp/Grpc.Core.Tests/NUnitMain.cs
@@ -33,6 +33,8 @@
 
 using System;
 using System.Reflection;
+using Grpc.Core;
+using Grpc.Core.Logging;
 using NUnit.Common;
 using NUnitLite;
 
@@ -45,6 +47,8 @@ namespace Grpc.Core.Tests
     {
         public static int Main(string[] args)
         {
+            // Make logger immune to NUnit capturing stdout and stderr to workaround https://github.com/nunit/nunit/issues/1406.
+            GrpcEnvironment.SetLogger(new TextWriterLogger(Console.Error));
 #if DOTNET5_4
             return new AutoRun(typeof(NUnitMain).GetTypeInfo().Assembly).Execute(args, new ExtendedTextWrapper(Console.Out), Console.In);
 #else
diff --git a/src/csharp/Grpc.Examples.Tests/NUnitMain.cs b/src/csharp/Grpc.Examples.Tests/NUnitMain.cs
index e6b76bcf3ba8314a7edfa2679358cefeaafa05c0..ea87802766b02f69c582c8fc4c3ee1b83b45c245 100644
--- a/src/csharp/Grpc.Examples.Tests/NUnitMain.cs
+++ b/src/csharp/Grpc.Examples.Tests/NUnitMain.cs
@@ -33,6 +33,8 @@
 
 using System;
 using System.Reflection;
+using Grpc.Core;
+using Grpc.Core.Logging;
 using NUnit.Common;
 using NUnitLite;
 
@@ -45,6 +47,8 @@ namespace Grpc.Examples.Tests
     {
         public static int Main(string[] args)
         {
+            // Make logger immune to NUnit capturing stdout and stderr to workaround https://github.com/nunit/nunit/issues/1406.
+            GrpcEnvironment.SetLogger(new TextWriterLogger(Console.Error));
 #if DOTNET5_4
             return new AutoRun(typeof(NUnitMain).GetTypeInfo().Assembly).Execute(args, new ExtendedTextWrapper(Console.Out), Console.In);
 #else
diff --git a/src/csharp/Grpc.HealthCheck.Tests/NUnitMain.cs b/src/csharp/Grpc.HealthCheck.Tests/NUnitMain.cs
index 6d77b12fef9e20ae86c4aeb6afd2709cdfcd37b8..0820523f35c3ffc19adbdee4b0615b04fcdfd125 100644
--- a/src/csharp/Grpc.HealthCheck.Tests/NUnitMain.cs
+++ b/src/csharp/Grpc.HealthCheck.Tests/NUnitMain.cs
@@ -33,6 +33,8 @@
 
 using System;
 using System.Reflection;
+using Grpc.Core;
+using Grpc.Core.Logging;
 using NUnit.Common;
 using NUnitLite;
 
@@ -45,6 +47,8 @@ namespace Grpc.HealthCheck.Tests
     {
         public static int Main(string[] args)
         {
+            // Make logger immune to NUnit capturing stdout and stderr to workaround https://github.com/nunit/nunit/issues/1406.
+            GrpcEnvironment.SetLogger(new TextWriterLogger(Console.Error));
 #if DOTNET5_4
             return new AutoRun(typeof(NUnitMain).GetTypeInfo().Assembly).Execute(args, new ExtendedTextWrapper(Console.Out), Console.In);
 #else
diff --git a/src/csharp/Grpc.IntegrationTesting/NUnitMain.cs b/src/csharp/Grpc.IntegrationTesting/NUnitMain.cs
index 4db8e158d3cf8f68469d846de73036f932a20448..d8902de08f53610bb8ed75b0fb6d44964dd8014b 100644
--- a/src/csharp/Grpc.IntegrationTesting/NUnitMain.cs
+++ b/src/csharp/Grpc.IntegrationTesting/NUnitMain.cs
@@ -33,6 +33,8 @@
 
 using System;
 using System.Reflection;
+using Grpc.Core;
+using Grpc.Core.Logging;
 using NUnit.Common;
 using NUnitLite;
 
@@ -45,6 +47,8 @@ namespace Grpc.IntegrationTesting
     {
         public static int Main(string[] args)
         {
+            // Make logger immune to NUnit capturing stdout and stderr to workaround https://github.com/nunit/nunit/issues/1406.
+            GrpcEnvironment.SetLogger(new TextWriterLogger(Console.Error));
 #if DOTNET5_4
             return new AutoRun(typeof(NUnitMain).GetTypeInfo().Assembly).Execute(args, new ExtendedTextWrapper(Console.Out), Console.In);
 #else