Unit Testing for C# Developers
4.5 (3,830 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
18,925 students enrolled

Unit Testing for C# Developers

Master unit testing C# code with NUnit and Moq: all about dependency injection, best practices and pitfalls to avoid
Bestseller
4.5 (3,830 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
18,939 students enrolled
Created by Mosh Hamedani
Last updated 4/2018
English
English, French [Auto-generated], 7 more
  • Indonesian [Auto-generated]
  • Italian [Auto-generated]
  • Polish [Auto-generated]
  • Portuguese [Auto-generated]
  • Romanian [Auto-generated]
  • Spanish [Auto-generated]
  • Thai [Auto-generated]
Current price: $121.99 Original price: $174.99 Discount: 30% off
5 hours left at this price!
30-Day Money-Back Guarantee
This course includes
  • 6 hours on-demand video
  • 3 articles
  • 2 downloadable resources
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • Learn unit testing from scratch
  • Tips and tricks to write clean, maintainable and trustworthy tests
  • Write loosely-coupled and testable code
  • Refactor legacy code towards testable code
  • Understand and implement dependency injection
  • Use mocks to isolate code from external dependencies
  • Apply the unit testing best practices
  • Learn the anti-patterns to avoid
Course content
Expand all 86 lectures 05:48:37
+ Getting Started
14 lectures 43:40
The Tooling
02:52
Source Code
00:15
Writing Your First Unit Test
10:27
Testing All the Execution Tests
05:22
Refactoring with Confidence
02:14
Using NUnit in Visual Studio
03:59
What is Test-Driven Development
03:19
Course Structure
01:46
Summary
00:41
Asking Questions
00:33
+ Fundamentals of Unit Testing
13 lectures 39:02
Introduction
00:47
Characteristics of Good Unit Tests
02:03
What to Test and What Not to Test
03:00
Naming and Organizing Tests
02:36
Introducing Rider
01:52
Writing a Simple Unit Test
03:52
Black-box Testing
04:43
Set Up and Tear Down
03:36
Parameterized Tests
03:25
Ignoring Tests
01:33
Writing Trustworthy Tests
06:11
Developers Who Don't Write Tests
03:51
Summary
01:33
+ Core Unit Testing Techniques
11 lectures 45:39
Introduction
00:32
Testing Strings
05:50
Testing Arrays and Collections
06:11
Testing the Return Type of Methods
04:02
Testing Void Methods
04:42
Testing Methods that Throw Exceptions
04:10
Testing Methods that Raise an Event
04:34
Testing Private Methods
09:50
Code Coverage
02:30
Testing in the Real-world
02:32
Summary
00:46
+ Exercises
6 lectures 33:59
19- Exercise- FizzBuzz
01:19
20- Solution- FizzBuzz
06:19
Exercise- DemeritPointsCalculator
00:54
Solution- DemeritPointsCalculator
09:43
Exercise- Stack
00:49
Solution- Stack
14:55
+ Breaking External Dependencies
14 lectures 55:31
Introduction
02:16
Loosely-coupled and Testable Code
03:34
Refactoring Towards a Loosely-coupled Design
09:42
Dependency Injection via Method Parameters
05:09
Dependency Injection via Properties
02:41
Dependency Injection via Constructor
04:22
Dependency Injection Frameworks
03:26
Mocking Frameworks
01:55
Creating Mock Objects Using Moq
06:47
State-based vs. Interaction Testing
01:54
Testing the Interaction Between Two Objects
03:40
Fake as Little As Possible
03:10
An Example of a Mock Abuse
04:54
Who Should Write Tests
02:01
+ Exercises
9 lectures 41:12
Exercise- VideoService
01:11
Refactoring
05:47
Testing
07:55
Exercise- InstallerHelper
01:26
Refactoring InstallerHelper
04:47
Testing InstallerHelper
08:05
Exercise- EmployeeHelper
02:37
Refactoring EmployeeController
05:24
Testing EmployeeController
04:00
+ Project- Testing BookingHelper
8 lectures 35:51
Introduction
02:12
Test Cases
03:40
Extracting IBooking Repository
07:44
Writing the First Test
04:29
Refactoring
07:50
Writing the Second Test
01:28
Fixing a Bug
03:44
Writing Additional Tests
04:44
+ Project- HouseKeeperHelper
11 lectures 53:42
Introduction
02:07
Refactoring For Testability
09:32
Fixing a Design Issue
02:59
An Alternative Solution
00:38
Writing the First Interaction Test
07:40
Keeping Tests Clean
05:42
Testing a Method is Not Called
05:37
Another Interaction Test
07:31
Extracting Helper Methods
08:02
Testing Exceptions
03:34
Requirements
  • Minimum 3 months programming in C#
Description

Picture this: you make a simple change to the code and suddenly realize that you created a dozen unexpected bugs. Sound familiar? You’re not alone!

Good news is, unit testing can make this a thing of the past.

Maybe you’ve heard of automated or unit testing before and you’re keen to learn more.

Or perhaps you’ve tried to learn it and got a bit lost or ended up with fat and fragile tests that got in the way and slowed you down.

Either way, what you need is a course that will teach you all you need to know about this essential skill - from the basics, right through to mastery level.


What is unit testing?

In a nutshell: it’s the practice of writing code to test your code and then run those tests in an automated fashion.


Why learn unit testing?

Why write extra code? Wouldn’t that take extra time to write? Would that slow you down? Why not just run the application and test it like an end user?

Thinking like this is the mistake lots of people make. I used to make it myself. I’ve had to learn the hard way!

I learned pretty fast that if you’re building a complex application or working on a legacy app, manually testing all the various functions is tedious and takes a significant amount of time.


As your application grows, the cost of manual testing grows exponentially. And you’re never 100% sure if you’ve fully tested all the edge cases. You’re never confident that your code really works until you release your software and get a call from your boss or an end user!

Several studies have shown that the later a bug is caught in the software development lifecycle, the more costly it is to the business.

Automated tests help you to catch bugs earlier in the software development lifecycle, right when you’re coding. These tests are repeatable. Write them once and run them over and over.


The benefits of using unit tests are:

  • help you to catch and fix bugs earlier, before releasing your app into production
  • help you to write better code with less bugs
  • help you to produce software with better design - extensible and loosely-coupled
  • give you rapid feedback and tell you if your code *really* works
  • force you to think of edge cases that you didn’t realize existed
  • test your code much faster
  • tell if you have broken any functionality as you write new code
  • allow you to refactor your code with confidence
  • act as documentation about what your code does
  • save you both time and money


A valuable skill for senior developers

More and more companies are recognizing the advantages of automated testing, that’s why it’s a must-have for senior coders. If you’re looking to reach the higher levels in your coding career, this course can help.

You don’t need any prior knowledge of automated testing. You only need 3 months of experience programming in C#.


With this course you’ll learn:

  • senior coder secrets - best practices to write great unit tests
  • tips and tricks to keep your tests clean, trustworthy and maintainable
  • the pitfalls to avoid – anti-patterns
  • how to refactor legacy, untestable code into loosely-coupled and testable code
  • all about dependency injection – the one thing every coder needs to know
  • the power of mocks – when and how to use them and when to avoid


You’ll get:

  • 6 hours of HD video
  • tutorials and guidance from a senior coder with 15+ years’ experience
  • exercises with step-by-step solution
  • downloadable source code
  • lifetime access
  • access online or offline at any time on any device
  • certificate of completion to present to your current or prospective employer
Who this course is for:
  • Anyone who wants to build better quality software with fewer bugs
  • Any developers who want to transition to the senior level