I had been having some serious grief with Visual Studioâ€™s unit testing tools. VS was complaining that some tests did not exist, and others called methods that didnâ€™t exist. Both claims were total lies as all methods in question existed, and could be found by using the â€œNavigate toâ€ feature in VS.
I had two basic errors when I tried to run tests. One was of the form “Method TestProject.SystemsRepositoryTest.CreateNewCamera does not exist” when the method did exist. I could right-click the test in the Test Results window and choose â€œOpen testâ€ and it would take me there. However, when trying to run the test, VS claimed it didnâ€™t exist.
The other error I got was of the form “Test method TestProject.SystemsRepositoryTest.GetAllCameras threw exception: System.MissingMethodException: Method not found: ‘System.Collections.ObjectModel.ObservableCollection`1 Repository.GetAllCameras()'” which was also a lie as the method being tested existed. Again, I could go to the test method, click on the name of the method being called, click f12 (Navigate to) and be taken to the code for the method.
Thanks to these problems, I have wasted loads of time debugging things that could have been fixed with unit testing. It has been frustrating to say the least!
Well, I finally found the answerâ€¦
I opened the bin/Debug folder in the test project in Windows Explorer and deleted everything in it. I then rebuilt the test project, and my tests ran fine.
For some odd reason, it looks like rebuilding the test project wasn’t actually changing the DLLs in the folder, so it was using old versions, in which the methods didn’t exist. Deleting them all forced VS to grab fresh copies of the referenced DLLs, and rebuild the test project’s DLL.
I donâ€™t know if this is a bug in Visual Studio 2010, but it doesnâ€™t seem to be a feature that I would have added in by choice!