| Thread overview | ||||||
|---|---|---|---|---|---|---|
|
December 19, 2014 Unittest in a windows app | ||||
|---|---|---|---|---|
| ||||
Hello everybody, this is my first post on this forum.
I have a question about unit testing a Windows application. I
have slightly modified Visual D's default Windows application
stub to the following:
<code>
module winmain;
import core.runtime;
import core.sys.windows.windows;
unittest {
assert(false);
}
extern (Windows)
int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR
lpCmdLine, int nCmdShow)
{
int result;
void exceptionHandler(Throwable e)
{
throw e;
}
try
{
Runtime.initialize();
result = myWinMain(hInstance, hPrevInstance, lpCmdLine,
nCmdShow);
Runtime.terminate();
}
catch (Throwable o) // catch any uncaught exceptions
{
MessageBoxA(null, cast(char *)o.toString(), "Error", MB_OK |
MB_ICONEXCLAMATION);
result = 0; // failed
}
return result;
}
int myWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR
lpCmdLine, int nCmdShow)
{
/* ... insert user code here ... */
throw new Exception("not implemented");
return 0;
}
</code>
I compiled it with the `-unittest` option. Strangely, when
running the app, no error is displayed, and the application
proceeds as usual. I would expect the program to display the unit
test failure and stop (the behaviour I have observed for console
applications). What am I missing?
Thanks for helping!
Dan
| ||||
December 20, 2014 Re: Unittest in a windows app | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Dan Nestor | I managed to isolate the problem to the following. Program 1 below works (displays unit test failure when run), while program 2 does not.
***** Program 1 *****
import std.stdio;
unittest
{
assert(false);
}
void main()
{
writeln("Hello D-World!");
}
***** Program 2 *****
module winmain;
import core.sys.windows.windows;
unittest {
assert(false);
}
extern (Windows)
int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR
lpCmdLine, int nCmdShow)
{
return 0;
}
| |||
December 20, 2014 Re: Unittest in a windows app | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Dan Nestor | Can it be because Windows main wrapper consumes exceptions or spawn a separate thread for that or something like that? | |||
December 20, 2014 Re: Unittest in a windows app | ||||
|---|---|---|---|---|
| ||||
Posted in reply to Dan Nestor | On 19.12.2014 22:39, Dan Nestor wrote: > Hello everybody, this is my first post on this forum. > > I have a question about unit testing a Windows application. I > have slightly modified Visual D's default Windows application > stub to the following: > [...] > try > { > Runtime.initialize(); Runtime.initialize() no longer calls the unittests since a few versions. You have to call runModuleUnitTests() explicitely, e.g. try { Runtime.initialize(); if (runModuleUnittests()) result = myWinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow); Runtime.terminate(); }... | |||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply