Using the Fluent NHibernate Persistence Tester and the Ghostbusters Test

2 min read

NHibernate 3.0 Cookbook

Get solutions to common NHibernate problems to develop high-quality performance-critical data access applications

  • Master the full range of NHibernate features
  • Reduce hours of application development time and get better application architecture and performance
  • Create, maintain, and update your database structure automatically with the help of NHibernate
  • Written and tested for NHibernate 3.0 with input from the development team distilled in to easily accessible concepts and examples
  • Part of Packt’s Cookbook series: each recipe is a carefully organized sequence of instructions to complete the task as efficiently as possible

     The reader would benefit from reading the previous article on Testing Using NHibernate Profiler and SQLite.

Using the Fluent NHibernate Persistence Tester

Mappings are a critical part of any NHibernate application. In this recipe, I’ll show you how to test those mappings using Fluent NHibernate’s Persistence tester.

Getting ready

Complete the Fast testing with SQLite in-Memory database recipe mentioned in the previous article.

How to do it…

  1. Add a reference to FluentNHibernate.
  2. In PersistenceTests.cs, add the following using statement:

    using FluentNHibernate.Testing;

     
  3. Add the following three tests to the PersistenceTests fixture:

    [Test]

    public void Product_persistence_test()
    {
    new PersistenceSpecification<Product>(Session)
    .CheckProperty(p => p.Name, “Product Name”)
    .CheckProperty(p => p.Description, “Product Description”)
    .CheckProperty(p => p.UnitPrice, 300.85M)
    .VerifyTheMappings();
    }

    [Test]

    public void ActorRole_persistence_test()
    {
    new PersistenceSpecification<ActorRole>(Session)
    .CheckProperty(p => p.Actor, “Actor Name”)
    .CheckProperty(p => p.Role, “Role”)
    .VerifyTheMappings();
    }

    [Test]

    public void Movie_persistence_test()
    {
    new PersistenceSpecification<Movie>(Session)
    .CheckProperty(p => p.Name, “Movie Name”)
    .CheckProperty(p => p.Description, “Movie Description”)
    .CheckProperty(p => p.UnitPrice, 25M)
    .CheckProperty(p => p.Director, “Director Name”)
    .CheckList(p => p.Actors, new List<ActorRole>()
    {
    new ActorRole() { Actor = “Actor Name”, Role = “Role” }
    })
    .VerifyTheMappings();
    }

     
  4. Run these tests with NUnit.

How it works…

The Persistence tester in Fluent NHibernate can be used with any mapping method. It performs the following four steps:

  1. Create a new instance of the entity (Product, ActorRole, Movie) using the values provided.
  2. Save the entity to the database.
  3. Get the entity from the database.
  4. Verify that the fetched instance matches the original.

At a minimum, each entity type should have a simple Persistence test, such as the one shown previously. More information about the Fluent NHibernate Persistence tester can be found on their wiki at http://wiki.fluentnhibernate.org/Persistence_specification_testing

See also

  • Testing with the SQLite in-memory database
  • Using the Ghostbusters test

 

Packt

Share
Published by
Packt

Recent Posts

Top life hacks for prepping for your IT certification exam

I remember deciding to pursue my first IT certification, the CompTIA A+. I had signed…

3 years ago

Learn Transformers for Natural Language Processing with Denis Rothman

Key takeaways The transformer architecture has proved to be revolutionary in outperforming the classical RNN…

3 years ago

Learning Essential Linux Commands for Navigating the Shell Effectively

Once we learn how to deploy an Ubuntu server, how to manage users, and how…

3 years ago

Clean Coding in Python with Mariano Anaya

Key-takeaways:   Clean code isn’t just a nice thing to have or a luxury in software projects; it's a necessity. If we…

3 years ago

Exploring Forms in Angular – types, benefits and differences   

While developing a web application, or setting dynamic pages and meta tags we need to deal with…

3 years ago

Gain Practical Expertise with the Latest Edition of Software Architecture with C# 9 and .NET 5

Software architecture is one of the most discussed topics in the software industry today, and…

3 years ago