I've been asked to do a small side-project to supply a simple application to one of our customers. Normally I would be working on back-end code where I have all of my testing needs figured out, and I've not yet had the dubious pleasure of writing tests for the GUI, so it's a little unclear to me how I should set up the testing code and tools for an EXE. My first instinct was to simply include the tests in with the App code, however that would require supplying a number of test-specific dependencies, which I have been instructed to specifically not ship to the customer. I am also unable to squeeze out any cash for a purpose built test tool, so I need to use the tools I have at hand (***StoryQ***, ***RhinoMocks***, and ***NUnit***), which really should be more than enough to test the behavior of a simple GUI app. So as far as I can see, this leaves me with trying to strike a good balance between keeping the design really simple, or purposefully over-engineering for the sake of the tests. It seems I'm either building the app with the main form in a module and testing against the module as I usually would, or finding some other mechanism to allow me to test as if my assembly was my usual run-of-the-mill DLL. So my question is: 1. Is there a specific/recommended method for configuring a simple GUI application with unit tests to allow me to adequately check state and behavior, using the tools I have at hand, and without resorting to over-engineering? 2. Have I missed something fundamental about the way NUnit should be invoked/configured when testing an EXE (as opposed to a DLL)? 3. Can you provide or point me in the direction of examples of how achieve all of this? I realize that there may be more than one way to do this so I'm looking for specific implementation guidelines based on your experience. Many thanks. Personal Side-note: *At last I have finally thought of something to ask for my first ProgrammersSE question... YAY! ;-)*