tags:

views:

67

answers:

2

The way I have my unit test set up is that a user can run the executable and select a dataset to use. This information is stored in app.config, however when I try to access app.config when running the unit test with Gallio Icarus it doesn't work.

Edit: I got the field to bind to an Application property however when I call Properties.Settings.Default.Save(); it doesn't seem to do anything. The app.exe.config does not change and the changes does not persist.

+2  A: 

Mock how you read the app config.

In your app write an interface & class that gets data from the app.config file. In your test, implement the interface on a dummy object, that will pass back known outputs each time.

The class that you're testing needs to take a parameter (on ctor or other) that is an object that implements the interface.

In your real code this will be the real object that reads from the app.config.

In the tests it will be the dummy object.

Binary Worrier
+1  A: 

app.config is the file that corresponds to the MyProgramme.exe.config file that the programme reads on start up. This can be accessed via the Configuration object in the System.Configuration namespace and assembly.

Properties.Settings.Default corresponds to the file user.config that your programme will generate when you call Properties.Settings.Default.Save()

So including the app.config file in the tests won't affect Properties.Settings.Default.

For more information see Using Settings

Matt Ellen
I tried it with user.config however when I run my unit test it doesn't read from the user.config that was created when I ran my application. Is there a way to have it read the user.config or should I be using app.config?
Reflux