Skip to content

Tutorial 2

PhuocLe edited this page Aug 27, 2018 · 13 revisions

Task

  • Create Unit Test Plugin

Prerequisites

Coding

  1. Add New Project 09. 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 06. 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
    • Select 9.0.2.4 in the Crm Version PL.DynamicsCrm.DevKit get all Microsoft.CrmSdk.CoreAssemblies version from NuGet
    • Select 4.5.2 in the .Net version
    • 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 05. 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 PreLeadCreate_LeadSubjectAlwaysUppercase()
{
    //setup
    Context.ProxyTypesAssembly = Assembly.GetAssembly(typeof(ProxyTypesAssembly));
    Context.Data.Clear();
    var subject = "lowcase subject";
    var target = new Entity("lead")
    {
        ["leadid"] = Guid.NewGuid(),
        ["subject"] = subject
    };
    PluginContext.InputParameters["Target"] = target;

    //run
    Context.ExecutePluginWithConfigurations<PreLeadCreateSynchronous>(PluginContext, null, null);

    //result
    var resultTarget = (Entity)PluginContext.InputParameters["Target"];
    var lead = new Shared.Entities.Lead(resultTarget);
    Assert.AreEqual(subject.ToUpper(), lead.Subject, false);
}
  1. Run All tests again
    • 5 passed tests
  2. Check-in all files to your source control
  3. You finished this tutorial

Summary

This tutorial, you know howto

Clone this wiki locally