C# – How to unit test console output

There’s two ways to unit test code that writes to the console (Console.WriteLine() / Console.Write()): In this article, I’ll show how to do both options. Option 1 – Capture the output with Console.SetOut() Let’s say you want to unit test the following code that outputs to the console with Console.WriteLine(): You can unit test this … Read more

Logging to the database with ASP.NET Core

I was reading about logging in ASP.NET when I came across this statement about logging to the database: When logging to SQL Server, don’t do so directly. Instead, add log messages to an in-memory queue and have a background worker dequeue and insert data to SQL Server. Paraphrased from Microsoft – No asynchronous logger methods … Read more

C# – Parsing commands and arguments in a console app

In a console app there are two ways to get commands: After getting a command, you have to parse it to figure out what code to execute. Typically commands have the following format: commandName -argumentName argumentValue. For example, take a look at this familiar git command: This is passing the command line arguments into the … Read more

C# – Default method implementations and constants in interfaces

You can add default method implementations (and constants) to interfaces (in C# 7+), like this: Note: The Log() method is converting the DateTime to a string with a custom format and including it with the logging message. This outputs the following: Microsoft’s stated purpose for this feature is that it allows you add methods to … Read more