views:

45

answers:

1

Maybe I'm using unit tests in the wrong way, but I have a very large database with a lot of data.

Each set of data presents a different scenario and the number of scenarios is too large to individually test. Therefore, I've decided the best way to get adequate coverage is to run the unit test against the data as many times as I could, and see if it will break and if it does, work out why it's happening.

The problem is in Visual Studio 2008, I can't figure out how to run a unit test more than once. Is that possible? Is it possible to tell VS2008 to run and re-run my unit tests continuously over the course of a period of time.

+1  A: 

If you don't mind breaking from the mold of having text code run straight down from start to end with no branching. Your data driven tests can still be driven by some kind of code in a unit test. In visual studio there are setup methods and tear down methods you can employ. You could also simply put code in your test methods that loop the data testing various combinations. But a general rule of thumb in low level unit tests is to have no complicated logic branching. Today I was just writing some unit tests (Working late again... I know, but I couldn't break away from the computer) and I took the opportunity to unroll some for loops. Simply because I didn't want any complexity in the test methods. But for data driven testing, I don't see any alternative.

EDIT: Sorry, but I don't have VS 2008 on this computer but I do have VS 2010. 1. In the solution explorer find your unit test configuration file. In VS 2010 it's called local.testsetting 2. Double click it to bring up it's properties. 3. The closest thing I found is on the 'Web Test' dialog there is a spinner value labeled "Fixed Run Count" that allows you to specificy how many times to peform a particular test run.

This may not be the best answer, but you pose a good question.

C Johnson
i don't think that's in VS2008, i've all the tests around an infinite loop and will just leave it. although now, it'll stop when it hits its first assert.fail. i would like to have it so it keeps going and gives me a summary at the end.
RoboShop
Putting it in an infinite loop sounds fine. Testing durability like that is a good methodology to practice.
C Johnson