public void UnitOfWork_Dispose_Test() { IDataContextAsync context = new NorthwindContext(); IUnitOfWorkAsync unitOfWork = new UnitOfWork(context); // opening connection unitOfWork.BeginTransaction(); unitOfWork.Commit(); // calling dispose 1st time unitOfWork.Dispose(); var isDisposed = (bool) GetInstanceField(typeof (UnitOfWork), unitOfWork, "_disposed"); Assert.IsTrue(isDisposed); // calling dispose 2nd time, should not throw any excpetions unitOfWork.Dispose(); context.Dispose(); // calling dispose 3rd time, should not throw any excpetions context.Dispose(); unitOfWork.Dispose(); }