This document discusses unit testing and test-driven development using Visual Studio 2010. It introduces unit testing features in VS 2010 like creating unit tests, generating test method stubs, and using test-driven development. It also covers objectives of TDD like reducing bugs and over-engineered code. Additional topics covered include the Visual Studio Team Test framework, attributes used for designating test classes and methods, running and executing tests, loading test data from databases, measuring test time and code coverage. Guidance is provided around test organization and isolation.
1. Unit Testing and Test Driven Development Using VS 2010 Abhimanyu Singhal Lead Consultant iMentor Knowledge Services
2. Introduce Unit Testing Features How to create Team Test unit tests. Generating the unit test method stubs for an assembly Using a test driven development (TDD) Objectives
3. Thinking about tests pushes developer to understand better the gathered requirements Reduces the over engineered code (dead code) Unit Tests help to check that any new modification wont break the existing features. TDD increases software flexibility TDD code is more decoupled Why is TDD Good
4. A Visual Studio integrated unit-testing framework Code generation of test method stubs. Running tests within the IDE. Incorporation of test data loaded from a database. Code coverage analysis once the tests have run. Visual Studio Team Test
5. Designates a Method as a Test Method Found in Microsoft.VisualStudio.QualityTools.UnitTesting.Framework Namespace TestMethod has to be an instance method with no paramters Method name is irrelevant because reflection searches for TestMethod Attribute TestMethodAttribute Class
6.
7. Team Test Uses Reflection to find Class with TestClass Attribute and Method with TestMethod Attribute and runs itTestClassAttribute Class
8. From Visual Studio As Part of Build Process From Command Line Running and Executing Tests
9. Takes a Parameter which is Exception Type to watch for If Exception does not occur test fails The Second parameter (string) is optional is the error message displayed when exception is not thrown ExpectedException Attribute
10. Use Test Properties Window Add TestData Attribute Source Type Connection String TableName DataAccessMethod Loading Test Data From Database
11. Provides associated data through DataRow Property TestDirectory, TestName Mesuring Test Time using BeingTimer() EndTimer() The TestContext
12. Determines how much code is tested Shows Percentage of Code Executed Highlights code to show which lines are executed Code Coverage
13. TestInitialize Attribute TestCleanup Attribute Code to be run before and after each test method Other Attributes for Lifetime Methods AssemblyInitializeAttribute/AssemblyCleanupAttribute ClassInitializeAttribute/ClassCleanupAttribute. Initializing and Cleaning Up Tests
15. Keep Testing Code in Separate Assemblies Check for cleanup during test setup and execute the cleanup prior to the setup as necessary Avoid creating dependencies between tests, each test should be autonomous. Create one test class corresponding to each class within the production code. Avoid creating other machine dependent tests Create mock objects to test interfaces Guidance – Unit Testing
16. To update the attendance for the session and obtain learning credits log on to https://ch1workspaces/sites/SW23/MS_Course_nominations/default.aspx Question and Answers Session