I am currently porting a D1 application to D2. I am trying to take advantage of new language features but mostly of the "new" standard library features. The old application has several unit tests and I would like to have them executed to secure that everything works as expected.

The problem with the unit tests is that they will be executed but I can not see the results because errors will be written to console output which is not available in a windows application.

I did a little bit of research and found this two similar threads:
- http://stackoverflow.com/questions/27580107/why-is-unit-testing-not-working-in-this-d-program - http://forum.dlang.org/thread/joiglupanlvejarms...@forum.dlang.org

But they just explain why that does not work.
Interestingly enough, the hint in the first thread to use the standard D main method instead of a WinMain (http://wiki.dlang.org/D_for_Win32) works for me. I just specify a *.def with SUBSYSTEM WINDOWS.

Class runtime.d seems to contain the code that performs the unit tests: bool runModuleUnitTests() Runtime has a @property moduleUnitTester which can be set to a function that runs the unit test of a given module. If this is property is set it will be used otherwise a default test runner will be executed. This default test runner will report any error with the internal function void printErr(in char[] buf).

The question is where should the error output go in a windows application. Possible solutions maybe:
- write that to file similar to the code coverage *.lst
- write it to windows debug view with win32: void OutputDebugStringA( LPCTSTR lpOutputString )

I will try set the modultUnitTester property and use OutputDebugView. Although, not very nice because a lot of code has to be copied.

Are there any other options?

Reply via email to