One common oversight we have encountered while working with developers is the mix up of the [TestInitialize] and [ClassInitialize] Attributes. When using these methods, be conscience of their differences. The Class Initialize attribute executes the decorated method once before the first test in the class is run, while the Test Initialize attribute executes before each test is run. There are different scenarios for when to use each, and putting code incorrectly in one or the other can cause unexpected behavior.
[ClassInitialize] annotated methods should be used to setup the state of the test class. This includes variables that are shared in all tests, but the values of which either does not change or the changing of their values will not impact a test.
[TestInitialize] annotated methods should be used to revert the state of variables in which every test depends upon.
When using these attributes, always make sure to run the entire set of unit tests as a group and not just individually. This will make sure that the test class has been setup properly.