Where do I place pre-conditions for test cases in MTM

Problem: I have preconditions for a test case in Microsoft Test Manager (MTM) but I don’t know where to store or how to notify the tester before executing the test. Solution: Attach a preconditions document to the first step of your test case or create the preconditions as a shared step. Explanation: When creating a Test Case in MTM you can have attachments on each test step in a test case.  One solution to the problem of preconditions is to attach a document that contains the preconditions to the first step of your test case.  Now when the tester begins the test case the first step will be presented with a link to the preconditions document.  From there the tester can simply click the link to open the document and perform the necessary preconditions for the test case. This same method can be used for any post conditions as well be attaching a document to the final step of the test case. Another option is to create the preconditions as shared steps and include them as the first step in the test case.

How to change the name of a CodedUI method without Feature Pack 2.

  Problem: I want to change the name of a method generated by the Coded UI Builder. Solution: Modify the UI map and regenerate code. Explanation: I would suggest downloading Feature Pack 2. However, if you are not a MSDN subscriber you may not have access to FP2. When you record using the Coded UI Test Builder or use an Existing Action Recording you may end up with method names you wish you could change.  We have all been taught to never modify a .Designer file because those are generated an may change at any time.  So the key is to update the value in the source of the code generation. That is the .uitest file.  A .uitest file is an XML representation of the actions taken during the recording.  To change a method name you simply locate the TestStepMarkerAction element with the MarkerInformation attribute with the value of the method you wish to change.  Update the file with the desired method name then save and close the file.  Now we must cause the .Designer file to be regenerated to use the new method names.  From the Solution Explorer right click the .uitest file and select Edit with Coded UI Test Builder.  Once the Coded UI Test Builder opens simply click the Generate Code button and close the builder.  Now the .Designer file will contain the new method names.      

How to override the connection string and target database of a database project

Problem: I need to override the connection string and target database of a database project built with Team Build. Solution: Pass the TargetConnectionString and TargetDatabase parameters to team build. Explanation: Although Team Build in 2010 is Windows Workflow based at the end of the day MSBuild is still being called to perform the actual build. Project files in Visual Studio are just MSBuild project files.  Not only does this make building Visual Studio projects and solution very easy but it also allows us to pass parameters to our builds.  Any properties set in a project file can be overwritten by passing in parameters to MSBuild.  The parameters we need to override are TargetConnectionString and TargetDatabase.  On the Process Tab of the Team Build 2010 Build Definition wizard you can use the MSBuild Arguments parameter to pass in parameters to MSBuild.  For example I can pass in the following to override the values in the project file, /p:TargetConnectionString="Data Source=.;Integrated Security=True;Pooling=False" /p:TargetDatabase=MyDatabase This allows me to keep the project file in version control set to the values used for development and override them for build when I deploy to different environments. 

Can't save values in custom controls on TSWA 2010

Problem: I just upgraded my TFS 2008 to 2010 and my custom TSWA controls are no longer saving values. Solution: Make sure the first thing you do in the InitializeControl() method from the IWebWorkItemControl inteface is call the code that populates the base.Controls collection.  For example to get the MultiValue control to work you must add a call to EnsureInnerControls() as the first line in InitializeControl() otherwise the values will not save.