Skip to content

Tutorial 2

PhuocLe edited this page Aug 24, 2018 · 13 revisions

Task

Create Unit Test project for plugin: Paz.LuckeyMonkey.Plugin.Lead

Coding

  1. Add New Project 9. C# ProxyTypes Project to your solution
    • A popup form Add new Proxy Types Project opened
    • Click button >< to create/select a Dynamics 365 connection
    • After connected, click OK
    • PL.DynamicsCrm.DevKit created project name: Paz.LuckeyMonkey.ProxyTypes
  2. Rebuild solution to restore NuGet packages
  3. Execute File run.bat of Paz.LuckeyMonkey.ProxyTypes project, waiting CrmSvcUtil generate code to GeneratedCode.cs file.
  4. Rebuild solution without errors
  5. Add New Project 6. C# Test Project to your solution
    • A popup form Add new Test Project opened
    • Dropdown list all available projects test
    • Select Paz.LuckeyMonkey.Plugin.Lead
    • Click OK
    • PL.DynamicsCrm.DevKit created test project name: Paz.LuckeyMonkey.Plugin.Lead.Test
  6. Rebuild solution to restore NuGet packages
  7. Add New Item 5. C# Test Class to Paz.LuckeyMonkey.Plugin.Lead.Test project
    • A popup form Add new Test CLass opened
    • Dropdown list all available test class
    • Select PreLeadCreateSynchronous
    • Click OK
    • PL.DynamicsCrm.DevKit created test class: PreLeadCreateSynchronousTest
  8. Rebuild solution without errors
  9. Open Test Explorer window and Run All tests.
    • 4 passed tests.
    • 1 failed test.
  10. Edit failed test
[TestMethod]
public void PreAccountCreate_Test_AccountName_Is_Null()
{
    //setup
    Context.ProxyTypesAssembly = Assembly.GetAssembly(typeof(ProxyTypesAssembly));
    Context.Data.Clear();
    var target = new Shared.Entities.Account
    {
        AccountId = Guid.NewGuid()
    };
    PluginContext.InputParameters["Target"] = target.GetCreateEntity();

    //run
    var plugin = Context.ExecutePluginWith<PreAccountCreateSynchronous>(PluginContext);

    //result
    var resultTarget = (Entity)PluginContext.InputParameters["Target"];
    var account = new Shared.Entities.Account(resultTarget);
    Assert.IsNull(account.Name);
}

[TestMethod]
public void PreAccountCreate_Test_AccountName_UpperCase()
{
    //setup
    Context.ProxyTypesAssembly = Assembly.GetAssembly(typeof(ProxyTypesAssembly));
    Context.Data.Clear();
    var target = new Shared.Entities.Account
    {
        AccountId = Guid.NewGuid(),
        Name = "Hello World"
    };
    PluginContext.InputParameters["Target"] = target.GetCreateEntity();

    //run
    var plugin = Context.ExecutePluginWith<PreAccountCreateSynchronous>(PluginContext);

    //result
    var resultTarget = (Entity)PluginContext.InputParameters["Target"];
    var account = new Shared.Entities.Account(resultTarget);
    Assert.AreEqual(account.Name, "HELLO WORLD");
}
  1. Run All tests again.
    • 6 passed tests.
  2. Check-in all files to your source control.
  3. You finished this tutorial.

Your Solution Explorer after you finished this tutorial

Finished Tutorial 2

Clone this wiki locally