How can I add log messages to an NUnit test that will appear in a nant build execution?
Asked Answered
H

2

51

With NUnit, if you add Debug.Print statements in your tests they appear in the test output. (At least they do in the ReSharper unit test window.)

When using a NAnt build file that executes the same tests, those Debug.Print statements do not appear.

How can I add messages to my unit tests that will appear both in the NUnit output and the build log output from NAnt?

Heaveho answered 24/10, 2012 at 12:58 Comment(0)
B
41

Console.WriteLine() should be preserved (it is for my version of NUnit at least).

That said, consider - each time you want to add some text output - how you could turn it into an assertion with a message. Your tests will get much better.

Bimestrial answered 24/10, 2012 at 18:5 Comment(2)
Generally I would agree with you, but in this case the information needed wasn't related to testing the app, it was metadata related to running the tests (specifically the executing path).Heaveho
Using Resharper + NUnit 2 you occasionally get interleaved results, or missing text at the end.Christianna
A
68

NUnit 3's way of logging during a test is via the TestContext class. It has a raft of static Write variants. Each emits general content to the test result.

TestContext.Out yields a TextWriter that can also be used to emit logging information into test results.

Aerate answered 27/1, 2016 at 15:32 Comment(2)
Is there a solution for NUnit 2?Christianna
Is this any different from calling Console.WriteLine()? Does the message get embedded in the test result? Sorry for the lazy asking -- trying to build a testrunner with NUnit.Engine and wondering if I can capture notes like these within the output XML. I will experiment.Targe
B
41

Console.WriteLine() should be preserved (it is for my version of NUnit at least).

That said, consider - each time you want to add some text output - how you could turn it into an assertion with a message. Your tests will get much better.

Bimestrial answered 24/10, 2012 at 18:5 Comment(2)
Generally I would agree with you, but in this case the information needed wasn't related to testing the app, it was metadata related to running the tests (specifically the executing path).Heaveho
Using Resharper + NUnit 2 you occasionally get interleaved results, or missing text at the end.Christianna

© 2022 - 2024 — McMap. All rights reserved.