.net SmokeTest for Windows 2.2.12.5 

.net SmokeTest is a Windows application, and .NET Reflector Add-In, that presents an interactive interface into any .net Assembly allowing you to smoketest an API via reflection. Construct an instance, call any method and set or get any property or field of any class then view or "drill-down" into the result. An indispensible tool for anyone involved in developing, testing and managing software products for Windows.

Download .net SmokeTest

Works in .NET Reflector as an Add-In

This is an early release of the product to get the idea out there and to "smoketest" the functionality in the real world. More work needs to be done to support any data type and so I'd like to hear from you if you have any ideas for new and expanded features.

Like this product? Consider a donation. Thanks

Here is a list of planned, in progress and completed stories (features and improvements) for this product. Let me know what you would like to see added to the list or if you have any comments.

New Stories
(highest priority at the top)
Story Description Status Version Rank
Support Array Arguments: Add the ability to create an array argument of any supported type. None 2.?  
Drag-n-drop Assembly Files: Add drag-n-drop of Assembly files onto the Assembly tree control. None 2.?  
Display Average Invoke Times: Display the average of multiple invoke calls along side the current display. The first invoke will not contribute to the average to compensate for Just-In-Time compilation. Each subsequent invoke of the member function will include the average ticks and ms times. None 2.?  
Support Indexed Properties: Add support for properties that accept any number of index pararameters. None 2.?  
Filter Members by Attributes: Add controls to filter members (Methods, Properties, etc.) by attributes (Public, Private, Inherited, etc.). None 2.?  
Filter Member Lists: Add the ability to filter member lists (Constructors, Methods, etc.) with keywords to visually reduce the number of items in the list. None 2.?  
Support for Generics: Add the ability to invoke members of any generic class. Currently Generic classes are not displayed in the tree view. None 2.?  
Invoke Operation Multiple Times: Add a control to invoke an operation multiple times. The default would be once. This feature would be helpful when testing API performance. None 2.?  
Show Selected Member Info: I want to see the full identity of the currently selected class member so that I can see the namespace context even when it's parent class scrolls outside the viewable area. None 2.?  
Add an Events Tab: Add a new "Events" tab that lists the events and delegate members. None 2.?  

Version 2.2
(support for 32 and 64 bit Assemblies)
Story Description Status Version Rank
Specify Assembly File on Command Line: Add the ability to specify an assembly file on the command line to be loaded at startup. The addition of this feature automatic enables drag-n-drop of assembly files onto the application icon.

The syntax for this feature is as follows:

smoketest[32][.exe] [path]

Where path is the absolute or relative path name of an existing Assembly DLL or EXE file.

Completed 03/24/2012 2.2.12.5  
Reloading Assembly duplicates Assembly Node: Re-loading the same assembly file creates another node in the Assembly tree. It should replace the existing node with the current Assembly.

Fixed 03/18/2012 2.2.12.5  
.NET Reflector Support: Fixed a defect that would not support smoke-testing of Types in some assemblies (e.g. System.dll).

Completed 03/17/2012 2.2.12.4  
.NET Reflector Add-In: Create a .NET Reflector Add-In DLL that will allow you to smoketest any supported Type from inside Reflector's Assembly browser.

To load the Add-In into .NET Reflector extract all files from the ZIP file into your Reflector directory and choose the SmokeTest.Reflector.AddIn.dll from the Add-Ins menu. Note: The Add-In requires a copy of SmokeTest.exe to be available in the same Reflector directory.

Completed 03/10/2012 2.2.12.3  
Include Types from the "null" Namespace: Include types from the global and null namespace in the Supported Types. This is necessary so that static types such as System.Console are included in the listing. Completed 03/10/2012 2.2.12.2  
Include Abstract Types: Include abstract class types so that any static members can be smoke tested. Completed 03/10/2012 2.2.12.2  
Application Icon: The smoketest application needs an Icon. I thought a smoke alarm would work nicely. Completed 03/04/2012 2.2.12.2  
Target Any CPU Platform: Modify the SmokeTest application (SmokeTest.exe) so that under 32 or 64 bit Windows you can smoke-test Assemblies built for "Any" platform. Also, include a new SmokeTest32.exe application to smoke-test "x86" Assemblies under 64-bit Windows. Here is a table that lists the Assembly types that can be loaded by each build of the SmokeTest application when run under Win 32 and Win 64.

  Win 32 Win 64
SmokeTest.exe Any / x86 Any / x64
SmokeTest32.exe Any / x86 Any / x86

Completed 02/20/2012 2.2.12.1  
Version 2.1
(targets only 32-bit Assemblies)
Story Description Status Version Rank
Create any Reference Type Argument: Add the ability for the user to create an instance of any reference type as an argument to a member function. Completed 02/14/2012 2.1.12.2  
Edit Reference Type Arguments: Add the ability to edit an instance of a Reference Type argument offering you more control over the arguments passed to functions. Completed 01/16/2012 2.1.12.1  
Initialize Argument Input: Initialize literal argument input fields with their corresponding default values (0 for int, 0.0 for double, etc.). This avoids annoying exceptions when invoking a function with the default arguments. Completed 01/14/2012 2.1.2012.0  
Create default Reference type Arguments: Automatically create instances of Reference type arguments by calling their default constructor, if available. This feature will let you invoke methods on class members with default instances of concrete class arguments instead of just a null value. Completed 12/25/2011 2.1.2011.1  
Replace "null" Button with Check Box: Replace the current button used to indicate a null argument with a more intuitive check box where Unchecked means pass a null value for the argument and Checked means use the argument value specified. Completed 09/10/2011 2.1.2011.0  
Version 2.0
(first public release)
Story Description Status Version Rank
Persist Member Tab State: Each member Tab (Contructors, Methods, etc) should have it's own set of specialized controls for persistency when switching between tabs. Completed 07/25/2011 2.0.4222.27899  
Show Time to Invoke an Operation: Display the time it took to invoke an operation (constructor, method, property, etc.). This can be helpful when determining API performance. Completed 07/16/2011 2.0.4214.11876  
Proof of Concept: Prove that the concept has value by implementing the minimum interface necessary to be able to interactively invoke members of any managed class from any .net Assembly. Completed 07/04/2011 2.0.4202.19010