Captin.ConsoleIntercept 2.0.0

dotnet add package Captin.ConsoleIntercept --version 2.0.0
NuGet\Install-Package Captin.ConsoleIntercept -Version 2.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Captin.ConsoleIntercept" Version="2.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Captin.ConsoleIntercept --version 2.0.0
#r "nuget: Captin.ConsoleIntercept, 2.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Captin.ConsoleIntercept as a Cake Addin
#addin nuget:?package=Captin.ConsoleIntercept&version=2.0.0

// Install Captin.ConsoleIntercept as a Cake Tool
#tool nuget:?package=Captin.ConsoleIntercept&version=2.0.0

Console Out Observer

Capture and observe Console output written by methods such as Console.WriteLine. It also leaves the original console output stream intact.

This is useful for temporarily capturing logging during integration or unit testing of your own code.

This is NOT useful for permanent silencing of Console.Out.

This is NOT useful for capturing output of an externally started program. For that you will want to look into usage of System.Diagnostics.Process.

Installing / Getting started

  1. Install the Captin.ConsoleIntercept NuGet package
  2. Add the NuGet package to your project
  3. Observe Console output in a test
     using Captin.ConsoleIntercept;
     using Xunit;
    
     [Fact]
     public void Test1()
     {
     	System.Console.Write("not observed");
     	using(var logged = ConsoleOut.Observe()) {
     		System.Console.Write("log (sent to real console too)");
     		Assert.Equal("log (sent to real console too)", logged.ToString());
     	}
     	System.Console.Write("not observed (and real console is restored)");
     }
    

Features

  • Capture console output cleanly with a using statement
      using(var logged = ConsoleOut.Observe()) {
      	...
      }
    
  • Nested using statements supported
      using(var a = ConsoleOut.Observe()) {
      	Console.WriteLine("a");
      	using(var b = ConsoleOut.Observe()) {
      		Console.WriteLine("a and b");
      	}
      }
    
  • Leaves standard Console.Out intact even when observing
      using(var logged = ConsoleOut.Observe()) {
      	Console.WriteLine("'logged' (and original console too)");
      }
    
  • NOT thread safe. Running tests in parallel that both capture output may cause observing logs from Test1 to show up in Test2

Developing

Here's a brief intro about what a developer must do in order to start developing the project further:

  1. Clone the project
     git clone https://github.com/captin411/Captin.ConsoleIntercept.git
    
  2. Open the solution in Visual Studio.

Contributing

Pull requests are welcome.

If you want to contribute, please fork the repository and use a feature branch.

It would be AWESOME if you add in a test to cover any new behavior or bug fixes that you might have.

Licensing

The code in this project is licensed under MIT license.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETStandard 2.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.0.0 521 2/18/2020
1.0.0 486 2/17/2020