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+ Microsoft AZ-900
Photoshop Graphic Design Adobe Illustrator Drawing Digital Painting InDesign Character Design Figure Drawing Canva
Life Coach Training Neuro-Linguistic Programming Mindfulness Personal Development 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 Retargeting
SQL Microsoft Power BI Tableau Business Analysis Business Intelligence MySQL Data Analysis Data Modeling Big Data
Business Fundamentals Entrepreneurship Fundamentals Business Strategy Online Business Business Plan Startup Freelancing Blogging Home Business
Unity Game Development Fundamentals Unreal Engine C# 3D Game Development C++ 2D Game Development Unreal Engine Blueprints Blender
2021-01-29 10:55:17
30-Day Money-Back Guarantee
Development Software Engineering Unit Testing

Writing Maintainable Unit Tests

Master the art of loosely coupled unit tests
Rating: 4.3 out of 54.3 (18 ratings)
66 students
Created by Jan Van Ryswyck
Last updated 2/2020
English
English [Auto]
30-Day Money-Back Guarantee

What you'll learn

  • How to apply the test pyramid
  • Learn about state and behaviour verification
  • Understand and apply the DRY, SRP and DAMP principles
  • How to organise unit tests
  • Build loosely coupled unit tests
  • Provide intentful assertions and observations

Course content

6 sections • 41 lectures • 3h 11m total length

  • Preview06:13
  • Preview01:00
  • Solitary Versus Sociable Tests
    03:24
  • Preview10:14
  • State Versus Behaviour Verification
    05:56
  • Test-Driven Development
    04:13
  • Summary
    00:32

  • Preview00:14
  • Clean Unit Tests
    02:22
  • The DRY Principle
    06:04
  • The Single Responsibility Principle
    03:00
  • The DAMP Principle
    04:44
  • Other Characteristics Of Maintainable Unit Tests
    01:38
  • Summary
    00:15

  • Introduction
    00:21
  • Arrange, Act, Assert
    04:02
  • AAA Per Test Method
    01:04
  • Single Assert Per Test
    04:30
  • Avoid SetUp / TearDown
    04:26
  • AAA Per Test Class
    08:14
  • Assert Last Principle
    01:22
  • Naming Unit Tests
    04:04
  • Summary
    00:36

  • Introduction
    01:40
  • Only Test Public Interfaces
    02:51
  • Object Mother
    10:52
  • Test Data Builder
    12:18
  • State Versus Behaviour Verification
    11:48
  • Indirect Inputs and Outputs
    05:36
  • Test Doubles
    21:42
  • Subject Under Test Builder
    04:16
  • Auto Mocking Container
    05:52
  • Fixture Object
    07:18
  • Summary
    00:48

  • Introduction
    00:31
  • Clear Observations
    04:30
  • Only Asserts Should Fail a Test
    02:12
  • Single Assert Per Test
    04:00
  • Procedural vs Object State Verification
    15:39
  • Summary
    00:28

  • Conclusion
    00:54

Requirements

  • A decent understanding of an object-oriented programming language, preferrably C# or Java.
  • At the very least some first experiences writing unit tests for production code.
  • Basic or intermediate knowledge of xUnit test frameworks (e.g. NUnit, JUnit, xUnit, ...).
  • Basic or intermediate knowledge of mocking frameworks in general.

Description

Are unit tests causing you pain? Are they constantly failing whenever you make changes to your production code? Do you spend a lot of time fixing them when they break? Are they difficult to set up and run? Do you have a hard time maintaining or structuring your unit test code? Are they causing you headaches from time to time? Are you on the brink of giving up on writing unit tests altogether or have you already done so?

Or do you just want to step up your game and want to learn more about how to write readable and maintainable unit tests?

This course is for experienced software developers who want to improve upon their existing skills in writing unit tests. By the end of this course, students will have gained the knowledge to build loosely coupled, highly maintainable and robust unit tests that are trustworthy and improve the overall code quality of your software applications. The content of this course is based on 15+ years of experience with Test-Driven Development. This knowledge is essential for becoming a senior-level software developer or a technical lead.

Although the examples that are used throughout this course are written in C#, the principles and guidance discussed here are broadly applicable to other platforms and programming environments as well (Java, Python, JavaScript, ... etc.). So students will be able to universally apply this knowledge throughout the rest of their careers as software developers.


Who this course is for:

  • This course is for software developers who want to improve upon their existing skills for writing readable and maintainable unit tests.

Instructor

Jan Van Ryswyck
Owner at Principal IT
Jan Van Ryswyck
  • 4.3 Instructor Rating
  • 18 Reviews
  • 66 Students
  • 1 Course

I’m a professional software developer since Y2K. A blogger since Y2K+5. Author of the book Writing Maintainable Unit Tests (Leanpub). Provider of training and coaching in XP practices. Curator of the Awesome Talks list. Thinking and learning about all kinds of technologies since forever.

Software development is one of my great passions in life. My goal as a software craftsman is to provide simple and qualitative solutions to complex business problems. In order to accomplish this, I'm continuously deepening my existing skills and expertise while learning new skills and broadening my horizons. Sharing my knowledge and experiences with other people is another one of my lifetime goals.

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