latest Post

Custom Exceptions in CRM Sandbox Plugins (Unit Test Samples)

Recently we have started to utlise the "FakeXRMEasy" library in order to perform unit testing on any of  our MS Dynamics plugins.  
While creating a new plugin recently I wanted to test that exceptions were thrown when various values were not passed in. 

To do this with the FakeXRMEasy Library we just need to add the  "Expected Exception" attribute to the method, see below. 

Screenshot showing expected general "InvalidPluginExecutionException"

However, I wanted to ensure the correct exception was thrown each time rather than just an generic "InvalidPluginExecutionException" therefore I decided to create my own custom exceptions which inherited from the OOB "Exception" class. This way in each of my tests I could decorate each method with the correct expected exception.

Screenshot showing expected custom exception "UserCannotEditRecordException"

This worked perfectly and all my unit tests passed however, when deploying the plugin and running within the Dynamics web interface I got the below unexpected error instead of the custom exception message I expected.  

What appears to be happening is  the correct exception is thrown however, CRM doesn't know how to handle it so a further unexpected exception is thrown.


I then tried inherting from the "InvalidPluginExecutionException" class instead thinking CRM knows about this so it should work however, I am prevented from inhering from this as it was created as a sealed class.  

After a little bit more research it came apparent that Custom exceptions are not supported in Dynamics CRM Sandboxed Plugins something I was never aware of having never needed to do this in the past. 

For those interested to ensure the correct exceptions were hit in my unit tests rather than using the expected exception attribute I simply wrapped a try catch round the test and asserted that the exception message contained the text I expected. 








Recommended Posts × +

1 comments:

  1. "We can easily redesign your existing website making it up to the calibre of your brand so that you can easily retain your customers; climbing the top position.
    Address: Asia Pacific Trade Center, Rashid Minhas Rd, Karachi
    Email: info@codeaze.org
    Phone: 0316 2586964" Codeaze

    ReplyDelete