2009. május 27., szerda

Unit test módszer az adatmanipulációhoz

Egy régebbi MSDN cikkben akadtam rá erre a nagyszerű módszerre, amivel a System.EnterpriseServices névtérben fellelhető tranzakciós eszközökkel szépen egységtesztelhetjük az adatbázisműveleteket, anélkül, hogy a tesztadatok elborítanának bennünket vagy mindenféle trükkös mocking és egyéb mókázásokra lenne szükség.
Persze néha az is hasznos lehet, arra is találtam egy jó módszert. Legközelebb majd leírom azt is :)

Vártam, hogy többen belém kötnek, miszerint ez integrációs teszt. Ha senki nem tette meg, akkor én kötök bele magamba. Persze a lényegen nem változtat, hogy minek nevezzük.

[TestFixture]

public class DBTest

{

    [SetUp]

    public void Setup()

    {

        // Enter a new transaction without inheriting from ServicedComponent

        Console.WriteLine("Attempting to enter a transactional context...");

        ServiceConfig config = new ServiceConfig();

        config.Transaction = TransactionOption.RequiresNew;

        ServiceDomain.Enter(config);

        Console.WriteLine("Attempt suceeded!");

    }

 

    [Test]

    public void Insert()

    {

        // Perform your magic against the database

        CategoriesManager mgr = new CategoriesManager();

        int newID = mgr.InsertCategory("MyCategory");

        Assert.IsTrue(newID != 0, "returned ID should be more than zero");

    }

 

    [TearDown]

    public void Teardown()

    {

        Console.WriteLine("Attempting to Leave transactional context...");

        if (ContextUtil.IsInTransaction)

        {

            // Abort the running transaction

            ContextUtil.SetAbort();

        }

        ServiceDomain.Leave();

        Console.WriteLine("Left context!");

        // Trying to access ContextUtil now will yield an exception

 

    }

 

}

Nincsenek megjegyzések: