If you are serious about your code, you must respect it and be confident about it. How can you be confident about it, if it is not covered with a proper set of tests? How can you trust it if you don't have an instant feedback loop? If you keep asking these questions, the course is for you.

Beside of a ton of other goodies, a pragmatic testing strategy can shape a great architecture, eliminate your fear to change codebase, deliver features and touch legacy stuff with an amazing level of confidence.

This 2-day practical workshop dives deep into the unit and especially integration testing in .NET/.NET Core world. We will start from scratch and finish up with advanced approaches pragmatic practitioners apply. Real world examples are guaranteed.

Topics covered in this course include:

Test-Driven Development Essentials

Defining Different Kind of Tests:

Unit Tests

Integration Tests

Start With the End in Mind: Practicing Acceptance Tests

Properties of Good Unit Tests

Properties of Good Integration Tests

Frameworks Overview:



Unit Testing Specifics in .NET Core

Diving Into Different Testing Techniques:

Value-based testing

State-based testing

Interaction testing

Diving Into Different Testing Techniques:

Leverage Unit Tests to Improve Code Design

A Notion of Dependency Injection

Difference Between Mocks, Stubs, Shims

Mocking Techniques

Mocking Frameworks

An Anatomy of a Test’s Lifecycle:

Arrange part (Including Different Frameworks - Autofixure, etc.)

Act Part

Assert part Including Different Frameworks - Shoudly, etc.)

Turn Business Requirements into .NET Code and Read Them as a Book with SpecFlow (Cucumber for .NET, BDD)

UI Automation with Selenium:

Selenium 101

Selenium Patterns

Using Page Object Pattern to Drastically Improve Quality of Your Tests

Taking Page Object technique to the Next Level of Readability via Fluent Interfaces

Introduce Metrics to Grade Your Selenium Tests

Selenium Dockerization

Starting up Standalone Selenium Nodes

Building Selenium-Grid cluster

Advanced Automation Technique for Responsive Apps

Getting Into Tools for Automated Visual Testing

Leverage "Gauge" to Write Your Specifications in Markdown

Touching HPE LeanFt Framework

Different Kind of Test Data Strategies

Parallelize Selenium Tasks with Akka.NET

Integration Testing Infrastructural Patterns:

Dedicated Integration Environments

Ad-hoc with .NET Core Built-in Web Servers and Entity Framework InMemory Database Provider

Putting It All Together:

Building a Complete CI/CD Pipeline for .NET Core Applications

Workflow Philosophy for High Quality standards


Developers, architects, devops willing to expand their testing knowledge beyond basics


You earn a certificate of participation by attending the course. No exam required.


The course is taught in English.


Artur is a seasoned, independent consultant, who went through enterprise applications of all kinds.

He is enthusiastic about building and leading strong teams, revealing their potential and making smart people working with other smart people.

Artur's peers know how pragmatically he combines business-oriented thinking and fanatic passion for software development best practices like Domain-Driven design, TDD, paired programming, writing clean code, etc.

Before he went independent, he worked as an architect and a tech lead. In addition to that Artur is an active OSS contributor and blogs at Craftsman at Work

This is limited offer. Grab your ticket today.



duration - 2 days

200 3200€

* Price does not include VAT (if applicable)

* Price for the flight and hotel is applicable if booked at least 1 month in advance.

* Price for on-premises training does not include travelling and accommodation costs (if training is hosted outside of Riga)

* This training is a subject to training cancellation policy