effective unit testing for dnn
Download
Skip this Video
Download Presentation
Effective Unit Testing for DNN

Loading in 2 Seconds...

play fullscreen
1 / 20

Effective Unit Testing for DNN - PowerPoint PPT Presentation


  • 194 Views
  • Uploaded on

Effective Unit Testing for DNN. James McKee Solutions Developer / Enterprise Architect @ punkcoder. THANKS TO ALL OF OUR GENEROUS SPONSORS!. About Me. Almost 10 years working .NET Consultant 7 years 7 Companies in the Fortune 100 10 total in the Fortune 500

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Effective Unit Testing for DNN' - myrrh


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
effective unit testing for dnn
Effective Unit Testing for DNN

James McKee Solutions Developer / Enterprise [email protected]

about me
About Me

Almost 10 years working .NET

Consultant 7 years

7 Companies in the Fortune 100

10 total in the Fortune 500

Currently with BlueBolt Solutions

Enterprise Architect for Bravo-Squared Software

Run Punk-Coder.com

New to the DNN Scene

questions
Questions

So to gauge the audience:

Know what unit tests are?

Realize that unit tests are something that you write not something you do?

Think that they are a great idea but something that you don’t have time for?

reasons people don t unit test
Reasons People Don’t Unit Test

Unit Tests are hard

Unit Tests are for people who don’t know how to program.

My project isn’t big enough to need unit tests.

I’m the only one working on my project.

My client doesn’t pay for unit tests.

We are on a compressed time line, we don’t have time for unit tests.

why unit testing is important
Why Unit Testing is Important

More Infromation:

https://blogs.msdn.com/b/dotnet/archive/2011/09/26/compatibility-of-net-framework-4-5.aspx?Redirected=truehttps://blogs.msdn.com/b/dotnet/archive/2012/10/17/net-framework-4-5-off-to-a-great-start.aspx?Redirected=true

what is a unit test
What is a unit test?

Unit Test as a function of code

Unit Test vs. Functional Test

interface based programming
Interface based programming

Major implementations should interact through the veil of an interface.

Programming to an interface improves modularity.

It encourages looser coupling.

Mocking classes can get complicated.

It’s just good design!

mocks
Mocks

An artificial object that mimics the behavior of a complicated class for the purpose of simplifying testing.

Example:

You would mock the following in your tests:

Database Calls

File System Calls

Web Service Calls

unit testing in dnn
Unit Testing in DNN

Many of the interaction points for modules and scheduled tasks are complicated and do not supply Interfaces.

Functionality such as database access requires instantiation of classes originating from DNN.

ninject to the rescue
Ninject to the Rescue

Ninject is a lightweight, full featured IoC container for use with dependency injection.

Open Source

Available at http://www.ninject.org/

building interfaces at boundaries
Building Interfaces at Boundaries

To make the application more testable we will create 2 Standard Kernels that will be responsible for filling dependencies:

In production code we will use the real kernel

In testing we will use the testing kernel to return mock objects.

In scheduled tasks this will be inserted at the beginning of custom code.

In views the presenter will be instantiated from Kernel

building factories for instance objects
Building Factories for Instance Objects

Because of state some objects don’t work well with direct instantiation.

DataContext is a good example. Reusing a data context for multiple calls can result in a time out, that leads to exception, which leads to GC.

To avoid this create factory classes that produce instance classes.

unit testing frameworks and tools
Unit Testing Frameworks and Tools

NUnit

xUnit, spiritual successor to NUnit

MBUnit

Visual Studio Built-In

Suffers from problems related testing x86/x64 in the same project.

Integrates well with performance testing and can use unit tests for load testing

where to go from here
Where to go from here

Build automation

Code Coverage

Performance testing

best practices
Best Practices

When it comes to unit testing, there is a very fine line between code reuse and masking issues.

If possible write your code as test driven, this will produce leaner code.

Aim for the 90% mark, but 80% is the accepted boundary.

Use asserts carefully, make sure that what you are asserting is the actual correct behavior.

contact me
Contact Me

Twitter: @punkcoder

email: [email protected]

work: [email protected]

ad