Unit tests should be repeatable. If a test fails, it should always fail, if it succeed, it should always be.
Good unit tests also repeatable all the time, not succeed at certain time, but fail at other times.
Each unit test should be independent, meaning it should not depend on other unit test for it to run.
You should also be able to run each unit test by itself, or a select group of tests.
Good ol’ HttpContext in ASP.Net.
HttpContext has no base class and isn’t virtual, thus, is unusable for testing and unmockable. Strongly recommended to not pass it around as arguments. Instead, pass around variables of type
New to C# 3.5 and meant to replace
HttpContextBase is abstract, thus, it is now mockable. Concretely implemented by
Also new in C# 3.5 – this is the concrete implementation of
HttpContextBase. To instantiate in a normal webpage:
var webContext = new HttpContextWrapper(HttpContext.Current)
The whole idea is to make your code test-able by allowing your test framework to mock the
More detail explanation on here.
- If you open NUnit project with NUnit, the app.config file will have to be in the same folder as the NUnit project file and have the same name as the project file name:
- If you open Visual Studio .dll file, the app.config will have to be in the same folder as the project file and have the same name as the project file name (including the extension):
- If you open Visual Studio project (.csproj) or solution (.sln) file with your NUnit, the app.config will have to be in the same folder as the project file and have the same name as the project file name:
I have already copied app.config file as instructed here but still get the same error. So, what could be the problem here?
Apparently, this error simply means the system not able to access database, namely: Connection String problem.
This is how I access my connection string:
Above code will not return the connection string I have in
web.config file. I use Entity Framework and in Entity Framework, the correct way to get connection string is:
My Visual Studio solution contains 5 projects, one of them is for unit testing purpose.
The unit testing project is referencing to Entity Framework library where I query data from database. Well, since the Entity Framework is depending on app.config for the connection string, my NUnit returns error when I run it. This is because NUnit can’t find the connection string in app.config file. The error is:
System.TypeInitializationException: The type initializer for ‘…’ threw an exception.
System.ArgumentException: The specified named connection is either not found in the configuration, not intended to be used with the EntityClient provider, or not valid.
Here’s the screenshot (some information is blacked out on purpose). I use NUnit 2.5.9 for unit testing.
Two workarounds for this problem are stated below. You don’t have to apply both workarounds, just either one of them. In my case, the first one works like charm.
- Copy app.config file, paste it in the same folder as your .nunit file and rename it to the same as your NUnit project filename.
Example: NUnit project file is “C:\Users\Documents\Nunit\ProjectTest.nunit”. My app.config will have to be “C:\Users\Documents\Nunit\ProjectTest.config”
- Copy app.config file, paste it in the same folder as your library (.dll) file and rename it to the same as your library (.dll) filename.
Example: Library project file is “C:\Users\Documents\ProjectSolution\ProjectTest\bin\Debug\ProjectTest.dll”. My app.config will have to be “C:\Users\Documents\ProjectSolution\ProjectTest\bin\Debug\ProjectTest.dll.config” (if doesn’t work, try rename it to “C:\Users\Documents\ProjectSolution\ProjectTest\bin\Debug\ProjectTest.config”)