Added banking application that will be tested.
Added unit test project with two basic unit tests for BankAccount.Debit method.  Fixed intentional error in Debit method that was discovered via unit test.  Added unit test slides and notes.
Abstracted common setup code out into TestSetup method.
Merge branch 'Basic_Unit_Test'
Added unit test for BankAccount.Transfer method which has a dependency - it calls the TransferService.SendFunds method.  Added dependency injection & mocking slide show & dependency injection notes.
Demonstration of the problem of testing a method that has a dependency: Changed the return value of the TransferService.SendFunds method.  Now the BankAccount_Transfer.Should_DecrementBalance_Given_ValidAmount unit test fails even though the method under test hasn't changed and still works perfectly.
Extracted interfaces from BankAccount class (class under test) and TransferService (dependency - class being called by method under test).

NOTE: Must manually add "public" keyword to auto-generated interface definitions.
Modified the BankAccount class (the class under test) for dependency injection:

1) Added a new constructor that takes an ITransferService object as the argument;

2) Modified the Transfer method (the method under test) to call the SendFunds method of the ITransferService object passed into the constructor, instead of calling SendFunds on a TransferService object that has been created locally.
Installed the Unity Application Block in the Bank project using NuGet.
Added Unity configuration.

NOTE: Ensure the unity.config file Copy to Output Directory property is set to either "Copy if newer" or "Copy always".
Added code to method that runs on application startup (in this case the Main method) to create and configure a Unity dependency injection container.  We then use that container to create a BankAccount object.

NOTE: Unlike the previous code, we never explicitly tell Unity to create a BankAccount object.  Instead we tell it we want an object that implements the IBankAccount interface.  Unity uses its config file to determine what type of object to create.  If we wanted to use a different type of object we would modify Unity's config file; we would not need to recompile the application.

NOTE 2: At this stage the application will build and run but the BankAccount_Transfer unit test will not.  The unit test calls the old BankAccount constructor, which does not have any arguments, so no ITransferService object is passed into the BankAccount object.  The unit test will fail when the BankAccount.Transfer method attempts to call the ITransferService.SendFunds method.  We need to create a mock ITransferService object and pass it into the new BankAccount constructor.  That will be the next step.
Merge branch 'Dependency_Injection_With_Unity'
Installed the Moq Mocking Library in the Bank_UnitTests project using NuGet.  Added notes about creating mock objects.
In the unit test project added a reference to the BankTransferService project.

NOTE: Now when we create a BankAccount object to test we have to pass an ITransferService object into the BankAccount constructor.  We'll need a reference to the BankTransferService project where the ITransferService interface is defined.
In the BankAccount_Transfer test method added code to instantiate a mock object.  Also set the return value of the mock object SendFunds method, which will be called during the test.  Modified the constructor of the BankAccount object (object under test) to accept the mock object as an argument.

NOTE: We must pass the Object property of the mock object, not the mock object itself, into the BankAccount constructor.
In the BankAccount_Transfer unit test added code to verify the mock object SendFunds method is called only once by the method under test, during a test.
Merge branch 'Mocking_Objects_With_Moq'