Unit testing, a way to acquire higher levels of software quality, is getting more focus in software industry these days. Unit testing is done by the developer, instead of a test specialist, who tests his own work, isolated from the other components of the system, which is the cheapest way of detecting and fixing software bugs during the software development cycle. In my thesis I examine a problematic area of unit testing, the testing of data access layers, and try to give a solution with memory databases.
I will present a component called NMemory, which is a memory database developed in C#.NET. I will go through the structure of the database and analyze each component, especially the data storage component. After this I will present an Entity Framework provider called Effort. Effort is a framework that is able to redirect the calls aimed to a hard drive database to an NMemory database created by Effort itself. During the presentation of Effort, I will examine the interoperability of NMemory and Entity Framework, the way of query processing in Effort and the other services given by the component.
I will describe in detail the modifications and expansions I made to the whole system. These include the support of Edm canonical functions, the modifications of database schema creation in Effort and some optimizations.
I also made measurements and other examinations on the system. The main goal of the examinations was to see the support the system can give in unit testing. I will explain these examinations in detail, and will analyze the results of the measurements, compared to a SQL Server 2008 database instance and to the old Effort system, if optimizations were made.