views:

27

answers:

2

I have to write Unit Tests for a method which requires a complex object Graph. Currently I am writing a Create method for each Test as shown below.

1. private static Entity Create_ObjectGraph_For_Test1()
2. private static Entity Create_ObjectGraph_For_Test2()
...... And So on

The create method has about 10 Steps and they might vary by 1-2 steps with each other. What is the best way to Create complex object graph. Apart from creating a Create method for each Test I can add parameter to a single Create methods but that might become confusing if the no of Tests are about 10 or so.

+1  A: 

You can extract the steps into methods, possibly parametrizing them, and make them chain-able so that one can write:

Entity myGraph = GraphFactory.createGraph().step1().step2(<parm>).step3(<parm>);

Choising meaningful names makes the fixture readable.

philippe
+1  A: 

It may be possible to put a substantial amount of common setup code into - well, of course: the setup() method, and then modify the object graph slightly for each individual test. If the setups for the different tests are sufficiently different, then I would encourage you to put the tests into separate classes and their setup into each test class independently.

Carl Manaster