Console is a simple end-to-end test framework for .NET console applications.
Check out the package at https://www.nuget.org/packages/IntelliTect.TestTools.Console
This currently has non-optimal nomenclature and is not guaranteed to be efficient, but it appears to work.
The view variable contains a sample view to test for. Within it, the << and >> symbols indicate that the inner content is entered into the console by the user -- including the newline, as they would press Enter.
stringview=@"Please enter something: <<Something>>You said 'Something'.";IntelliTect.TestTools.Console.ConsoleAssert.Expect(view,()=>{MyMethod()});Performs a unit test on a console-based method. A "view" of what a user would see in their console is provided as a string, where their input (including line-breaks) is surrounded by double less-than/greater-than signs, like so: "Input please: <<Input>>".
stringexpected=$@"(abstract, 1)(abstract, 2)(abstract, 3)*(add\*, 1)";IntelliTect.TestTools.Console.ConsoleAssert.ExpectLike(expected,()=>{Program.Main();});Normalizes all line endings of the input string into the current Environment newline string.
stringexpected=$@"test123and2*and this is my *expected message";expected=IntelliTect.TestTools.Console.ConsoleAssert.NormalizeLineEndings(expected);IntelliTect.TestTools.Console.ConsoleAssert.ExpectLike(expected,()=>{Program.Main();});Performs a unit test on a console-based executable. what a user would see in their console is provided as a string, where their input (including line-breaks) is surrounded by double less-than/greater-than signs, like so: "Input please: <<Input>>".
stringexpected=$@"*Pinging * ?::1? with 32 bytes of data:Reply from ::1: time*";stringpingArgs="-c 4 localhost";if(RuntimeInformation.IsOSPlatform(OSPlatform.Windows)){pingArgs=pingArgs.Replace("-c ","-n ");}elseif(RuntimeInformation.IsOSPlatform(OSPlatform.Linux)){expected=$@"PING *(* (::1)) 56 data bytes64 bytes from * (::1): icmp_seq=1 ttl=64 time=* ms*";}ConsoleAssert.ExecuteProcess(expected,"ping",pingArgs,outstring_,out_);... More to come later.