Isolated integration testing for ASP.NET
Clone or download
chrischu Refactor option validation to occur in the TestSiteManager to allow a…
…ll special options to be set before validation occurs
Latest commit ef6ee2b Mar 23, 2018


DryRunner provides isolated integration testing for ASP.NET. A common problem when doing automated integration testing against ASP.NET websites is that tests can inadvertently modify your local development database, or other files within your development website. DryRunner solves that problem by:

  • deploying a test version of your website to a temporary location,
  • hosting the test version of your website using IIS Express, and
  • cleaning up afterwards by deleting the test version.

DryRunner requires you to create a Test build configuration (alongside the usual Debug, Release and any other build configurations you may already have). You can use Web.Test.config to configure test-specific database connection strings, and other test-specific settings.


Install the DryRunner package using NuGet.


You'll need to setup a couple of things before DryRunner will work:

  1. Install IIS Express on your local development machine (and build server, if you want to use DryRunner there too).
  2. Create a Test build configuration for your website project. Note that you don't need to create a new solution configuration, only a project-level configuration for the website project(s) that you want to test.


// You'd normally want to do this in a test fixture setup.
string websiteProjectName = "DryRunner.TestWebsite";
TestSiteManager testSiteManager = new TestSiteManager(websiteProjectName, new TestSiteOptions
    Server = new TestSiteServerOptions
        Port = 9000, // Any port that won't conflict with other services running on your computer (optional; default is 8888).
        ApplicationPath = "/blub" // Application path (optional; default is the server root "/").

// Run your tests and point them to: http://localhost:9000/blub

// You'd normally want to do this in a test fixture teardown.

If you don't need to customise the port or application path, you can just do:

string websiteProjectName = "DryRunner.TestWebsite";
TestSiteManager testSiteManager = new TestSiteManager(websiteProjectName);

Additionally, if you are using MSBuild macros in your web application project, you can utilize additional parameters to configure the $(SolutionDir) and $(ProjectDir). Just add the paths to your TestSiteOptions object using the SolutionDir and ProjectDir, respectively.


DryRunner is released under the MIT License.