Visual Studio 2010 Essential Training
Illustration by Richard Downs

Verifying your code with unit tests


Visual Studio 2010 Essential Training

with Walt Ritscher

Start your free trial now, and begin learning software, business and creative skills—anytime, anywhere—with video instruction from recognized industry experts.

Start Your Free Trial Now

Video: Verifying your code with unit tests

This chapter is about unit testing, which is a very developer-centric type of test. Let me start with my definition of a unit test. A unit test is an automated chunk of code that calls a class or a method and verifies that our assumptions about the behavior of the code under test are correct. Unit tests are commonly written using a unit testing framework. They should always be automated and easily accessible. Anyone on your team should be able to run the unit tests at anytime to verify that the code under test is working, and that no one has broken the build. Let's look at the unit testing tools inside Visual Studio.
Expand all | Collapse all
  1. 2m 3s
    1. Welcome
      1m 2s
    2. Using the exercise files
      1m 1s
  2. 7m 19s
    1. Understanding the Visual Studio versions
      3m 51s
    2. Setting up your developer computer
      3m 28s
  3. 58m 2s
    1. Creating a Visual Studio project
      4m 58s
    2. Working with Solution Explorer
      6m 32s
    3. Working with big projects
      3m 53s
    4. Taking a tour of the Integrated Developer Environment (IDE)
      8m 36s
    5. Introducing drag-and-drop UI design
      7m 38s
    6. Working with the Properties window
      6m 44s
    7. Looking at Server Explorer
      7m 4s
    8. Exploring the new Help engine
      6m 41s
    9. Setting options for the IDE
      5m 56s
  4. 39m 25s
    1. Creating a simple WPF application
      1m 32s
    2. Building the UI with the editors
      9m 14s
    3. Working with the application code
      3m 37s
    4. Communicating with the web site
      7m 15s
    5. Connecting your data
      8m 4s
    6. Binding to an RSS feed
      5m 4s
    7. Packaging and deploying the application
      4m 39s
  5. 39m 46s
    1. What languages are supported in Visual Studio 2010?
      1m 17s
    2. Exploring basic settings for the Code Editor
      5m 35s
    3. Writing a C# program
      6m 48s
    4. Writing a VB program
      6m 29s
    5. Working with C++
      6m 38s
    6. Working with F Sharp
      6m 9s
    7. Font and color options
      6m 50s
  6. 1h 5m
    1. Formatting your code
      6m 43s
    2. Navigating your code
      7m 44s
    3. Using the Task List
      2m 26s
    4. Commenting your code
      2m 45s
    5. Documenting your code
      8m 26s
    6. Using IntelliSense effectively
      7m 0s
    7. Working with code snippets
      6m 25s
    8. Refactoring your code
      5m 15s
    9. Understanding code generation
      2m 10s
    10. Generating code with T4
      6m 29s
    11. Using the Class View, Class Designer, and Class Diagram tools
      5m 51s
    12. Refactoring VB with CodeRush Xpress
      4m 33s
  7. 1h 11m
    1. Working with project and item templates
      8m 38s
    2. Creating a console application
      7m 5s
    3. Creating a class library
      6m 26s
    4. Creating a web site with ASP.NET
      7m 37s
    5. Creating a rich internet application with Silverlight
      6m 57s
    6. Creating a classic Windows application with Windows Forms
      10m 31s
    7. Creating a dramatic Windows application with Windows Presentation Foundation (WPF)
      4m 41s
    8. Creating a WCF service
      9m 1s
    9. Using an existing WCF service
      6m 38s
    10. Navigation UI designs with the Document Outline view
      3m 41s
  8. 33m 18s
    1. Creating a data project with SQL Project
      6m 24s
    2. Clarifying the confusion on .NET Data
      3m 31s
    3. Using ADO.NET in your application
      6m 50s
    4. Creating typed datasets
      7m 55s
    5. Using the data binding tools
      8m 38s
  9. 30m 13s
    1. Debugging code
      9m 32s
    2. Working with the Watch and other debug windows
      7m 46s
    3. Other debugging techniques
      6m 50s
    4. IntelliTrace historical debugging in Visual Studio Ultimate
      6m 5s
  10. 17m 56s
    1. Understanding Visual Studio editions and test tools
      2m 22s
    2. Verifying your code with unit tests
      8m 58s
    3. Running performance and load tests
      6m 36s
  11. 34m 5s
    1. Building your application
      4m 19s
    2. Customizing the build process with MSBuild
      6m 36s
    3. Setting assembly information
      2m 12s
    4. Deploying a basic Windows application
      2m 19s
    5. Creating an installer with Visual Studio
      7m 39s
    6. Creating a ClickOnce application
      5m 13s
    7. Setting up IIS for deploy
      2m 9s
    8. Deploying a Silverlight or ASP.NET application
      3m 38s
  12. 14m 0s
    1. Understanding source control
      2m 9s
    2. Setting up Team Foundation Server source control
      3m 5s
    3. Using Team Foundation Server source control
      8m 46s
  13. 17m 31s
    1. Understanding the .NET Office integration
      4m 16s
    2. Making a Word 2010 application
      7m 54s
    3. Making an Excel 2010 add-in
      5m 21s
  14. 31m 34s
    1. Understanding the extensibility model in Visual Studio
      2m 17s
    2. Adding external tools to the Tools menu
      4m 42s
    3. Creating macros
      7m 16s
    4. Using the Extension Manager
      5m 1s
    5. Creating an MEF add-in
      7m 9s
    6. Deploying and installing an add-in with VSIX
      5m 9s
  15. 25m 34s
    1. Working with configuration files
      5m 37s
    2. Using the Settings Editor
      7m 30s
    3. Using the Resources Editor
      6m 59s
    4. Localizing your resources
      5m 28s
  16. 1m 17s
    1. Goodbye
      1m 17s

please wait ...
Watch the Online Video Course Visual Studio 2010 Essential Training
8h 9m Intermediate Nov 16, 2010

Viewers: in countries Watching now:

In Visual Studio 2010 Essential Training, author Walt Ritscher demonstrates how to use Visual Studio 2010 Professional to develop full-featured applications targeting a variety of platforms. Starting with an overview of the integrated developer environment, the course covers working with code editors, navigating and formatting code, and deploying applications. Also included are tutorials on running performance and load tests, and debugging code. Exercise files accompany the course.

Topics include:
  • Creating a Visual Studio project
  • Building the user interface
  • Binding to an RSS feed
  • Coding with IntelliSense
  • Creating rich Internet applications with Silverlight
  • Building Windows applications with Windows Forms
  • Integrating with SQL Server
  • Working with Microsoft Office applications
  • Understanding extensibility in Visual Studio
  • Working with data, ADO.NET and datasets
  • Using source control
ASP.NET Silverlight Visual Studio
Walt Ritscher

Verifying your code with unit tests

This chapter is about unit testing, which is a very developer-centric type of test. Let me start with my definition of a unit test. A unit test is an automated chunk of code that calls a class or a method and verifies that our assumptions about the behavior of the code under test are correct. Unit tests are commonly written using a unit testing framework. They should always be automated and easily accessible. Anyone on your team should be able to run the unit tests at anytime to verify that the code under test is working, and that no one has broken the build. Let's look at the unit testing tools inside Visual Studio.

I am going to be working with this project called WorkingWithUnitTests. First, let me show you the code I am going to test. It's inside this Book class Double-click on the Book class and you'll see that this class has one property called Title, one property with a getter and a setter, and a property called Price, and then I have two methods: UpdatePrizeByPercent and SaveBook. And here is a question for you: how do you know about the text in your code? My general feeling is that you only need to text code that contains logic statements.

So if your method has a loop construct, or an If statement, or it contains a calculation, it needs to be tested. Not all code qualifies, however. It's a waste of time to test simple property getters. So looking at this code up here, it doesn't make any sense to test this because there is no calculation going on. I will right my first unit test by going to the Test menu and choosing New Test. Within this dialog, I need to pick my testing language. I will choose C#, and then I will click on this Unit Test template. Most often, you can write your unit tests and the code at the same time.

There are many in the developer community that advocate writing your test first before writing any code. This is known as test-driven development. I agree with many of their principles, but for this movie, I'm adding tests to a prewritten code. I am going to call my unit test BookUnitTest, and then I am going to click OK. Visual Studio realizes I do not have a test project yet, so it prompts me for name for my new project. That looks like a great name for a unit testing project. I will click on Create and then on OK on this dialog. Several things happened in my project.

First of all, a new folder was added called Solution Items, with a few test items in there. Then a new UnitTest project was added, including this C# file down here, BookUnitTest. Let's see what's inside here. Double-click. Here is the class that is going to contain my testing code, and the way we tell the unit testing framework that this is a test class is by putting this TestClass attribute on the class itself. And then each method that I want to write that is going to test my code is going to be marked with this TestMethods.

That's so that the unit testing framework can find this method. Let me show you another way of adding a unit test. I will use a wizard this time. I'll click on this Unit Test Wizard, verify it is going to go in a UnitTest project, click OK and then over here, I am going to save my changes to my project. I'm going to select the class that I want to test. Test this book class, and I only need to test the SaveBook book and the UpdatePriceByPercent methods. So I will unselect everything else and then click OK.

This time, it wrote a slightly better test class. If you'll notice, my test methods now say SaveBook class, and there is a little bit of sample test code in here. Now I am going to delete these and put my own in here. I have already prewritten the code for these tests. They are in this Assets folder. I am going to first start by using this IncreasePrice.txt file. Double-click on this one and copy all of this code and then paste it in BookTest.cs.

I think I just double-clicked on the title. I detached this from the window. The way you put it back is you Ctrl+double-click on the header. I will paste my code in. Here is my TestMethod attribute, and the way I like to name my tests is by using the name of the method that I am going to test, the scenario that I am testing, and the expected behavior. It makes for a long name, but any developer that's looking at this test knows what it's expected to do. Now, what am I doing in my test case? I am instantiating an instance of that class, the Book class.

I am trying to verify that this UpdatePriceByPercent function works the way I want, which is I pass in a value, and it updates the price. So first, I am going to set a price for the book, then I am going to call my UpdatePriceByPercent, and then I am going to use one of the test classes, which is called Assert. I am going to use that to verify that the results are what I expect them to be. There are a number of Assert methods. If you look at the Assert class itself, you can see there are lots of test methods here: AreSame, there is a method called IsFalse, another one down here called IsNull, IsNotNull.

I have picked one called AreEqual, and the syntax for this is you pass in the expected value and then you pass in the actual value, and the Assert will verify whether these are correct or not. So what am I doing? I'm asserting that I should have 10 times 0.05, and then I'm saying, now look at the Book.cs and see if it has that value. Let's run the test. To run the test, I will go to the Test menu, choose this Windows submenu, and choose Test List Editor. I'll then build my project, which will build my test and my regular project, and it shows two test methods. The one that I just wrote down here is the UpdatePriceByPercent.

I will put a check mark here, and then I'll come up and run checked tests. At the bottom-half of the screen you'll see that there is a Passed result. It says Test run is complete. I had made one test. One test passed. You want to have all green lights down here. Now what happens if a developer comes along and goes to this book class and make a mistake. They look at this code and say, I am going to refactor this--maybe I should have been dividing. So they make this change, and they compile the application. I did a Ctrl+Shift+B to compile the application this time.

Then when you run the unit test the next time--I will go over here and do Refresh--and then when I run my unit test, that developer immediately sees that change they made 10 minutes ago is causing one of our unit tests to fail. So they are going to back and look at me and say, what did I do to break the build? Let's go back and fix that code because I want all green lights in a few minutes. Go back over here. Let me switch this back to multiple. And I have got two more text I want to add to BookTest, and what I am verifying this time is that the SaveBook method is working the way I expect.

So look what happens if I try to save the book. I look at the price that's currently stored in the Book class and if it's less then zero, then I throw an ArgumentOutOfRangeExeption. And if the price is larger than 90, I throw the same ArgumentOutOfRangeExeption. So when I write my test cases, I need to make sure that if you pass in a negative value, it throws that exception. So let's go to SaveBook1, and copy this code. I will go to my BookTest class and paste it, and then I might as well bring over the other bit of code while I am at it.

I will go over here and get the SaveBook2 and copy this code and paste it in BookTest. Then I will build the project, and then I will step through the code and show you what's it doing. In this first test, I am instantiating the book, I'm setting a negative price, and then I'm attempting to save the book. In the second test, I'm doing exactly the same thing, only I am setting an $80 price and saving the book.

Now, I expect this method to throw an exception, so I put this attribute up here to tell the testing harness, it's okay if it throws an exception. In fact, I expect it to throw exception, and this is the exception I expect: ArgumentOutOfRange. Now we will go test our code. Switch over to the test editor. You see there is two new unit tests listed here. I'll check both of those and then run my tests. And down at the bottom of the screen, you see that the UpdatePriceByPercent passed, the negative one passed because it threw that exception, but this one is not throwing any exception, and why not? Let's go and look at my test code. Because I didn't pass any number that was higher than 90.

So if I change this value to 90.01, rebuild my application, switch over to the Test editor and run my tests again, I get all green lights. This is what you're looking for. Every time you write code, you write a unit tests, you write the conditions that you want to test, and then you run your tests every time you make a change in your code. Make sure you haven't broken any of your pre-existing tests. Now there are other asserted conditions they should explore when you have time, and in the next movie, I'll show you another type of test called performance testing.

Find answers to the most frequently asked questions about Visual Studio 2010 Essential Training .

Expand all | Collapse all
please wait ...
Q: Which edition of Visual Studio 2010 do I need to follow along in this course?
A: The course is taught with Visual Studio 2010 Professional, but can also be used with the Premium or Ultimate editions. The Express editions of Visual Studio, including Visual Basic 2010 Express, Visual C# 2010 Express, and Visual C++ Express, are not covered in this course.
Q: I'm attempting to download the exercise files for this course, and my virus protection is blocking me from unzipping the downloaded file. Are the files corrupted?
A: The alert is a false-positive message. Your antivirus software is detecting the active code included in the exercise files, which in some ways resembles viral code. There is nothing to be alarmed about and you can ignore the warning. This is common among coding courses and environments.
Share a link to this course

What are exercise files?

Exercise files are the same files the author uses in the course. Save time by downloading the author's files instead of setting up your own files, and learn by following along with the instructor.

Can I take this course without the exercise files?

Yes! If you decide you would like the exercise files later, you can upgrade to a premium account any time.

Become a member Download sample files See plans and pricing

Please wait... please wait ...
Upgrade to get access to exercise files.

Exercise files video

How to use exercise files.

Learn by watching, listening, and doing, Exercise files are the same files the author uses in the course, so you can download them and follow along Premium memberships include access to all exercise files in the library.

Exercise files

Exercise files video

How to use exercise files.

For additional information on downloading and using exercise files, watch our instructional video or read the instructions in the FAQ .

This course includes free exercise files, so you can practice while you watch the course. To access all the exercise files in our library, become a Premium Member.

Join now Already a member? Log in

* Estimated file size

Are you sure you want to mark all the videos in this course as unwatched?

This will not affect your course history, your reports, or your certificates of completion for this course.

Mark all as unwatched Cancel


You have completed Visual Studio 2010 Essential Training.

Return to your organization's learning portal to continue training, or close this page.

Become a member to add this course to a playlist

Join today and get unlimited access to the entire library of video courses—and create as many playlists as you like.

Get started

Already a member ?

Exercise files

Learn by watching, listening, and doing! Exercise files are the same files the author uses in the course, so you can download them and follow along. Exercise files are available with all Premium memberships. Learn more

Get started

Already a Premium member?

Exercise files video

How to use exercise files.

Ask a question

Thanks for contacting us.
You’ll hear from our Customer Service team within 24 hours.

Please enter the text shown below:

The classic layout automatically defaults to the latest Flash Player.

To choose a different player, hold the cursor over your name at the top right of any page and choose Site preferences from the dropdown menu.

Continue to classic layout Stay on new layout
Exercise files

Access exercise files from a button right under the course name.

Mark videos as unwatched

Remove icons showing you already watched videos if you want to start over.

Control your viewing experience

Make the video wide, narrow, full-screen, or pop the player out of the page into its own window.

Interactive transcripts

Click on text in the transcript to jump to that spot in the video. As the video plays, the relevant spot in the transcript will be highlighted.

Learn more, save more. Upgrade today!

Get our Annual Premium Membership at our best savings yet.

Upgrade to our Annual Premium Membership today and get even more value from your subscription:

“In a way, I feel like you are rooting for me. Like you are really invested in my experience, and want me to get as much out of these courses as possible this is the best place to start on your journey to learning new material.”— Nadine H.

Thanks for signing up.

We’ll send you a confirmation email shortly.

Sign up and receive emails about and our online training library:

Here’s our privacy policy with more details about how we handle your information.

Keep up with news, tips, and latest courses with emails from

Sign up and receive emails about and our online training library:

Here’s our privacy policy with more details about how we handle your information.

submit Lightbox submit clicked
Terms and conditions of use

We've updated our terms and conditions (now called terms of service).Go
Review and accept our updated terms of service.