automated unit and integration testing with ndbunit

16
Automated Unit and Integration Testing with NDbUnit Stephen D. Ritchie 1-May-2012

Upload: stephen-ritchie

Post on 04-Dec-2014

4.727 views

Category:

Technology


5 download

DESCRIPTION

Sample code available here: https://github.com/ruthlesshelp/Presentations When coding and running automated integration tests, have you bumped into "database in an unexpected state" failures? The database is often in the wrong initial state when test code runs. NDbUnit is a .NET library for managing database state for unit and integration testing. As a database testing framework, it provides the capability to arrange the data in the database before and after a test method runs. This helps ensure that the database’s state is consistent for the execution of each test. In this presentation, you will learn: How to unit test a stored procedure with NDbUnit How to automate the integration testing of the data access layer How to enable refactoring through automated integration testing How to improve automated UI testing with NDbUnit NDbUnit clears away some very significant automated testing obstacles, which can help you avoid common pitfalls of automated testing. About Stephen Ritchie - Stephen Ritchie is the author of Pro .NET Best Practices (http://www.apress.com/9781430240235). He has been writing software professionally for over 20 years. He is the .NET best practices steward at Excella, working together with .NET project teams to facilitate and to implement new and better development practices. He is often called upon to setup the continuous integration server, perform code analysis, and automate the testing, packaging and deployment of software.

TRANSCRIPT

Page 1: Automated Unit and Integration Testing with NDbUnit

Automated Unit and Integration Testing with NDbUnit

Stephen D. Ritchie1-May-2012

Page 2: Automated Unit and Integration Testing with NDbUnit

Excella Consulting

Chrysler New Yorker

Page 3: Automated Unit and Integration Testing with NDbUnit

Excella Consulting

Overview

• Unit Testing Databases Is Difficult– CRUD Operations on Tables– Complex Querying of Multiple Tables– Views– Functions– Stored Procedures– Triggers !?!

Page 4: Automated Unit and Integration Testing with NDbUnit

Excella Consulting

Overview

• Automated Integration Testing With Databases Is Really Difficult– “Data Not In Known-State Before Test”

Page 5: Automated Unit and Integration Testing with NDbUnit

Excella Consulting

Overview

• Object Relational Mapping (ORM)– Entity Framework– NHibernate– Linq2Sql

• Linq Queries

Page 6: Automated Unit and Integration Testing with NDbUnit

Excella Consulting

Overview

• NDbUnit– Database Testing Framework

• Borrows from the Java community’s DbUnit• “.NET library for managing database state during unit testing”

– Apache License, Version 2.0• Free and Open Source

– NDbUnit Project• http://code.google.com/p/ndbunit/

– NuGet Package• http://nuget.org/packages?q=NDbUnit

– Supports Many Databases• Microsoft SQL Server 2005 and 2008 (Express thru Enterprise)• Oracle (XE thru Enterprise, 9i and later)• SQLLite

Page 7: Automated Unit and Integration Testing with NDbUnit

Excella Consulting

Tell Me More …

• How does NDbUnit work?

• Perhaps an example would be helpful …

Page 8: Automated Unit and Integration Testing with NDbUnit

Excella Consulting

Unit Testing Databases Is Difficult

• Unit Testing Databases Is Difficult– CRUD Operations on Tables– Complex Querying of Multiple Tables– Views– Functions– Stored Procedures– Triggers !?!

• Perhaps an example would be helpful …

Page 9: Automated Unit and Integration Testing with NDbUnit

Excella Consulting

Automated Integration Testing With Databases Is Really Difficult

• Automated Integration Testing With Databases Is Really Difficult– “Data Not In Known-State Before Test”

• Perhaps an example would be helpful …

Page 10: Automated Unit and Integration Testing with NDbUnit

Excella Consulting

Automated Testing The “Surface API”

• “Surface Testing”– DAL

• Perhaps an examplewould be helpful?

Page 11: Automated Unit and Integration Testing with NDbUnit

Excella Consulting

Integration Testing The ORM Interface

• “Surface Testing” Revisited– ORM Interface Surface

• NDbUnit– Independently Controls the

Data Store

Page 12: Automated Unit and Integration Testing with NDbUnit

Excella Consulting

NDbUnit Downside

• Independence Has A Cost– Separately Defined The Schema– Separately Defined Each Known-Data-State

• Changing Schema– Updating DataSet– Updating XML Files

Page 13: Automated Unit and Integration Testing with NDbUnit

Excella Consulting

NDbUnit Upside

• Liberates Refactoring– Switch from CRUD Stored Procedures to ORM– Database Consolidation– Automated Integration Testing Legacy Code

• Leap Forward

• Reporting– Test Report Queries Independent of Reporting Tool

• Browser Testing– Put Database In Known State

• Smoke, Stability, Performance, Regression and Other Testing– Automated Integration Testing

Page 14: Automated Unit and Integration Testing with NDbUnit

Excella Consulting

Of Course It’s Safe … After You

Page 15: Automated Unit and Integration Testing with NDbUnit

Excella Consulting

Shameless Self Promotion Time!

Get 40% off Pro .NET Best Practices!• Buy the eBook at

Apress.com• Enter the  promo

code: CMAP12• Formats: PDF, ePub, or

MOBI• Valid until May 31, 2012

Page 16: Automated Unit and Integration Testing with NDbUnit

Excella Consulting

More Shameless Self Promotion

• Email: [email protected]

• Twitter: @ruthlesshelp

• Blog: http://ruthlesslyhelpful.net

• LinkedIn: http://www.linkedin.com/in/sritchie

• Facebook: http://www.facebook.com/ProDotNetBestPractices