Udemy
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Development
Web Development Data Science Mobile Development Programming Languages Game Development Database Design & Development Software Testing Software Engineering Development Tools No-Code Development
Business
Entrepreneurship Communications Management Sales Business Strategy Operations Project Management Business Law Business Analytics & Intelligence Human Resources Industry E-Commerce Media Real Estate Other Business
Finance & Accounting
Accounting & Bookkeeping Compliance Cryptocurrency & Blockchain Economics Finance Finance Cert & Exam Prep Financial Modeling & Analysis Investing & Trading Money Management Tools Taxes Other Finance & Accounting
IT & Software
IT Certification Network & Security Hardware Operating Systems Other IT & Software
Office Productivity
Microsoft Apple Google SAP Oracle Other Office Productivity
Personal Development
Personal Transformation Personal Productivity Leadership Career Development Parenting & Relationships Happiness Esoteric Practices Religion & Spirituality Personal Brand Building Creativity Influence Self Esteem & Confidence Stress Management Memory & Study Skills Motivation Other Personal Development
Design
Web Design Graphic Design & Illustration Design Tools User Experience Design Game Design Design Thinking 3D & Animation Fashion Design Architectural Design Interior Design Other Design
Marketing
Digital Marketing Search Engine Optimization Social Media Marketing Branding Marketing Fundamentals Marketing Analytics & Automation Public Relations Advertising Video & Mobile Marketing Content Marketing Growth Hacking Affiliate Marketing Product Marketing Other Marketing
Lifestyle
Arts & Crafts Beauty & Makeup Esoteric Practices Food & Beverage Gaming Home Improvement Pet Care & Training Travel Other Lifestyle
Photography & Video
Digital Photography Photography Portrait Photography Photography Tools Commercial Photography Video Design Other Photography & Video
Health & Fitness
Fitness General Health Sports Nutrition Yoga Mental Health Dieting Self Defense Safety & First Aid Dance Meditation Other Health & Fitness
Music
Instruments Music Production Music Fundamentals Vocal Music Techniques Music Software Other Music
Teaching & Academics
Engineering Humanities Math Science Online Education Social Science Language Teacher Training Test Prep Other Teaching & Academics
AWS Certification Microsoft Certification AWS Certified Solutions Architect - Associate AWS Certified Cloud Practitioner CompTIA A+ Cisco CCNA Amazon AWS CompTIA Security+ AWS Certified Developer - Associate
Graphic Design Photoshop Adobe Illustrator Drawing Digital Painting InDesign Character Design Canva Figure Drawing
Life Coach Training Neuro-Linguistic Programming Personal Development Mindfulness Meditation Personal Transformation Life Purpose Emotional Intelligence Neuroscience
Web Development JavaScript React CSS Angular PHP WordPress Node.Js Python
Google Flutter Android Development iOS Development Swift React Native Dart Programming Language Mobile Development Kotlin SwiftUI
Digital Marketing Google Ads (Adwords) Social Media Marketing Google Ads (AdWords) Certification Marketing Strategy Internet Marketing YouTube Marketing Email Marketing Google Analytics
SQL Microsoft Power BI Tableau Business Analysis Business Intelligence MySQL Data Modeling Data Analysis Big Data
Business Fundamentals Entrepreneurship Fundamentals Business Strategy Online Business Business Plan Startup Blogging Freelancing Home Business
Unity Game Development Fundamentals Unreal Engine C# 3D Game Development C++ 2D Game Development Unreal Engine Blueprints Blender
30-Day Money-Back Guarantee
Development Software Engineering TDD Test Driven Development

TDD in C# From A to Z

Grow software by TDD with SpecFlow + TestStack White. Learn test-driven development and improve unit testing skills!
Rating: 4.4 out of 54.4 (356 ratings)
2,546 students
Created by Engineer Spock
Last updated 7/2020
English
30-Day Money-Back Guarantee

What you'll learn

  • Practice TDD in your daily job
  • Practice katas to improve TDD and understanding of the programming fundamentals
  • Write acceptance tests with SpecFlow in Gherkin
  • Develop software in a "true" agile, iterative process
  • Apply best practices of unit testing and TDD
Curated for the Udemy for Business collection

Course content

8 sections • 83 lectures • 9h 35m total length

  • Download Source Code
    00:06
  • Join .NET Community of Students
    00:02
  • Preview01:06
  • Preview16:18
  • What is TDD?
    05:00
  • Red / Green / Refactor
    04:16
  • Three Laws of TDD
    01:42
  • Changing Requirements and the Safety Net
    05:23
  • F.I.R.S.T.
    02:48
  • Code Coverage
    01:42
  • Preview04:04
  • Testing Frameworks and Tools
    05:06
  • When TDD Fails?
    02:46
  • Conclusion
    02:02

  • Outline
    01:46
  • Regular Agile Process in 200 Words
    01:59
  • VS and R# Shortcuts
    03:44
  • Refactoring Commands Built-In VS 2017
    00:09
  • Fibonacci Numbers
    07:38
  • Three Main TDD Techniques
    04:31
  • Grabbing the Gold
    03:10
  • FizzBuzz
    11:06
  • Preview12:07
  • Updateable Spin
    17:50
  • Continuous Testing
    03:57
  • Tic-Tac-Toe (Crosses and Noughts)
    36:17
  • Assert First
    01:26
  • Demo - Sticks
    32:16
  • Conclusion
    01:50

  • Outline
    01:39
  • Stack Kata
    13:43
  • Immutable Stack Kata
    16:55
  • LinkedList Kata
    29:18
  • Conclusion
    00:48

  • Outline
    01:09
  • Problem Demo
    03:43
  • Refactoring to Make Code Testable
    04:19
  • Test Doubles
    05:55
  • Writing Tests with Hand-Rolled Mocks
    11:53
  • Problems with Hand-Rolled Mocks
    01:16
  • Mocking Frameworks
    07:46
  • Writing Tests with a Mocking Framework
    07:45
  • NSubstitute. Key Features
    18:06
  • Classic School vs London School
    02:23
  • Conclusion
    01:18

  • Outline
    01:28
  • Preview02:23
  • Overview of SpecFlow
    01:43
  • Gherkin. Features and Scenarios
    03:41
  • Basics of SpecFlow
    09:32
  • Integration and UI-Testing
    05:24
  • UI-Automation Testing Framework
    01:05
  • TestStack.White Overview
    04:00
  • Conclusion
    01:40

  • Outline
    02:18
  • Application Overview
    09:00
  • Writing Acceptance Tests
    14:58
  • Building a Bridge to User Interface Applying the Page Object Design Pattern
    19:52
  • Implementing Acceptance Tests
    26:37
  • Implementing ViewModels using TDD. Part 1.
    01:08:23
  • Implementing ViewModels using TDD. Part 2.
    23:38
  • Conclusion
    01:46

  • Outline
    01:00
  • What is TDD in the End? Life without TDD
    00:59
  • Agile and TDD
    01:32
  • TDD and Design Upfront
    02:35
  • Do Unit Tests Guarantee the Success?
    02:25
  • Having no Tests is Better than Having Bad Tests
    03:22
  • Architecture and Design
    04:56
  • Conclusion
    01:40

  • Outline
    01:08
  • Ending the TDD Day
    01:41
  • Pair Programming and Ping-Pong Programming
    03:23
  • Quality of Tests
    03:35
  • Test Data
    01:50
  • Shouldly
    01:33
  • Prefer Positive if-Statements
    01:15
  • Testing Trivial Code
    02:59
  • Test Single Concern
    03:06
  • Singletons and Static Classes
    07:02
  • Builder Design Pattern. Immutability and Testability
    09:08
  • Conclusion
    01:48
  • BONUS Lecture
    01:18

Requirements

  • You should already be familiar with the basics of C#
  • You should already be familiar with the basics of unit testing
  • You should already be familiar with the basics of dependency injection

Description

Today unit testing is the absolutely required skill which is required from any professional developer. Companies expect from developers to know how to write unit tests including all the most important topics such as mocking and test driven development (TDD in short).

This course is all about practicing TDD using C# programming language and NUnit as a unit testing framework. Along the way, we will learn the concepts related to unit testing. This course does not cover all the features of NUnit. This course is way more interesting.

Learning unit testing and TDD puts a powerful and very useful tool at your fingertips. Being familiar with unit testing and TDD you can write reliable and maintainable applications. It is very hard to lead a project which is not covered by unit tests.

Content and Overview   

This course is primarily aimed at developers who’re already familiar with the basics of unit testing and dependency injection. Some experience in C# programming is required. The course provides solid theoretical base reinforced by tons of practical material.

We start with basics of test-driven development. Why we need TDD? What is TDD? When TDD fails, three laws of TDD, different types of tests, tooling and other fundamental topics. This section is mostly theoretical.   

Theory is dead without practice, so starting from the second section, you’ll see tons of programming sessions where I’ll demonstrate how to implement generating of Fibonacci numbers, FizzBuzz, parsing of roman numerals, updateable spin synchronization primitives, tic-tac-toe or crosses and noughts game and game in sticks. You’ll also learn:   

  • How a regular agile development process looks like   

  • That you need to learn shortcuts to practice TDD more smoothly   

  • Three Main TDD techniques: faking, triangulation and obvious implementation   

  • Which tests to write first   

  • How to start writing a test in a TDD manner   

  • Stack kata   

  • Immutable stack kata   

  • And list kata   

  • What is acceptance testing   

  • About the SpecFlow acceptance testing framework   

  • How to write acceptance tests with SpecFlow in Gherkin language   

  • What are UI tests   

  • What tools for writing UI Tests exist   

  • How to access UI through the TestStack.White framework   

Have you heard about katas? No, I’m talking about programming. In the third section, you’ll learn what is a code kata and I’ll demonstrate three code katas:   

Growing an application by writing tests first, we’re not only writing unit tests first. So, in the next section, you’ll learn what is acceptance testing and integration testing. You’ll learn:   

You’ll need to see how to apply all the material learned by this moment. Practice helps very much with understanding especially when we uncover highly practical topics such as TDD. That’s why I decided to show you how all the things work in practice altogether. So, in the next section, you’ll see a real enterprise approach for working on a software project in action.   

  • I’ll build a bridge to UI through TestStack.White applying the Page Object design pattern   

  • I’ll write acceptance tests using the bridge built for accessing UI   

  • I’ll implement ViewModels and all the corresponding business-logic   

  • What is TDD in the end? Is it possible to live without it?   

  • The relationships between TDD and Agile development process   

  • Should we design architecture upfront or not?   

  • Do unit tests guarantee the success?   

  • Quality of tests, some criterions   

  • How to express data for writing unit tests   

  • Shouldly for writing more readable assertions   

  • Singletons, Static classes and testability, Builder design pattern   

  • And some other important topics

The last two sections are rather philosophical. We will discuss:   

  • What is TDD in the end? Is it possible to live without it?   

  • The relationships between TDD and Agile development process   

  • Should we design architecture upfront or not?   

  • Do unit tests guarantee the success?   

  • Quality of tests, some criterions   

  • How to express data for writing unit tests   

  • Shouldly for writing more readable assertions   

  • Singletons, Static classes and testability, Builder design pattern   

  • and some other important topics

Here is my Teaching Approach -

No fluff, no ranting, no beating the air. I respect your time. The course material is succinct, yet comprehensive. All important concepts are covered. Particularly important topics are covered in-depth.

Take this course, and you will be satisfied.

Who this course is for:

  • Any developer who wants to improve professional programming skills

Featured review

Paulo Pocinho
Paulo Pocinho
23 courses
4 reviews
Rating: 5.0 out of 5a year ago
This course includes very clear explanations on what TDD is all about. The instructor is able to drive key concepts, with concise examples. The pace is fluid and constant. I had time to think through and follow the live example code. It is a practical course that inspires the right mindset on writing testable code from start to finish. I enjoyed the lectures and, as a bonus, I also learned about other techniques and thought-provoking topics related to TDD.

Instructor

Engineer Spock
Software Engineer - 1000+ Reviews, Average Score - 4.5
Engineer Spock
  • 4.2 Instructor Rating
  • 7,768 Reviews
  • 63,070 Students
  • 22 Courses

I'm thankful enough for that I love what I do.

I began my career as a postgraduate student participating in Microsoft ImagineCup contest.

I've been working with .NET platform since 2003. I've been professionally architecting and implementing software for nearly 7 years, primarily based on .NET platform. I'm passionate about building rich and powerful applications using modern technologies. I'm a certified specialist in Windows Applications and Service Communication Applications by Microsoft. I'm one of the coordinators of the MSK.NET User Group in Moscow.

"If it's work, we try to do less. If it's art, we try to do more." - Seth Godin.

What I can say is that software is my art.

  • Udemy for Business
  • Teach on Udemy
  • Get the app
  • About us
  • Contact us
  • Careers
  • Blog
  • Help and Support
  • Affiliate
  • Impressum Kontakt
  • Terms
  • Privacy policy
  • Cookie settings
  • Sitemap
  • Featured courses
Udemy
© 2021 Udemy, Inc.