Small width layout Medium width layout Maximum width layout Small text Medium text Large text
     Search
Downloads Downloads Directory Directory Forums Forums Forge Forge Blogs Blogs        Marketplace Marketplace Careers Program Careers
Products › Development › Forge › Provider - Authentication › OpenID Provider Register  |  

 

 

  Quick Links  
 


  Team Leadership  

Mike Horton
(Team Lead)

 

 Charles Nurse
(Core Team Sponsor)

 


  Team Members  

 Daniel Bartholomew
(CardSpace)

Mike Horton
(Active Directory)

Ian Sampson
(Active Directory)

  Charles Nurse
(LiveID, OpenID)

We're recruiting!  Can you handle support for the LiveID or OpenID provider?

 


  DotNetNuke Projects  
The DotNetNuke Projects are a special category of platform extensions which are developed by volunteers to conform to the high professional standards mandated by DotNetNuke Corporation. The DotNetNuke Projects are distributed as a standard part of the DotNetNuke core application release offerings.

 


AspDotNetStoreFront
  Ads  
 


  Sponsors  

Meet Our Sponsors

SmarterTools
The Official Microsoft ASP.NET Website
Portal Webhosting - Hosting For Developers
Red-Gate Software
MaximumASP
SourceGear - Tools for Developers
 


Authentication Provider :: OpenID

The OpenID provider allows a user to authenticate to a website using their OpenID credentials.

More information on OpenID can be found at http://openid.net/what/

 


Team Member Blog
Jun 2

Posted by: Charles Nurse
6/2/2008

I have been having some fun recently with TDD or Test Driven Development.

For those of you who who haven't experienced this development technique the concept is simple in theory, but is such a paradigm shift that it takes a bit of getting used to.

The idea is simple - the first thing you do is to write a test, and then develop the code until the test passes.  The idea is that you only build what you need to get the test to pass.  The results aof this process is that the code is "less bloated",  and of course if done correctly every line of code can be tested independent of other components of the application.

There are a number of testing frameworks, NUnit, MBUnit and MSTest, and the Visual Studio testing tools, while they default to the built in Unit Testing framework can be configured to use the framework of your choice.

So how do you go about this in Visual Studio?  The basic process is as follows, and assumes that we are starting from scratch.  The details of the steps are left for the reader to research.

  1. Create a new Solution.
  2. Add a "Test" project - this is a special project template that automatically creates a "test" class wired up to use the Visual Studio Testing framework.
  3. The Class file will have a template class method with a "[TestMethod]" attribute.  Add your test code to this method. For example - this is a test from an MVC project I am working on.

  4. Try and run the test.  The test will not build as you haven't created the actual code yet, in this case the "IndividualsController" class and the List method.
  5. Addthe "real " project, add the class file and create the correct method signature - so the code builds.

  6. Try and run the test - this time the test should build - as long you created the method signature properly - but the test will fail as we haven't implemented the body of the method yet. 
  7. Next implement the code body.

  8. Rerun the test - and if you implemented it correctly the test will pass. 

    Note that the code above is the current status of the method.  In order to pass the test the only line neccessary is the first line and the last line.  The if /else blocak was added to satisfy a second test.

While TDD purists would say you should do every step as outlined, most TDD developers in practice do not run the test at step (6) that they know will fail. 

As you build up your tests, you will get a report like this

It really is cool to see all those "green" lights.

I have found that while it has taken me a little longer to build this project - as I learned to work with the new paradigm, I am now at the stage where adding a new feature is taking much less time as I do not find myself needing to browse to the test site to check the code is working.  In fact, in this project I had something like 20 - 25 tests working before I even fired up the browser the first time, and as I had created tests that passed for all layers of the application, the browse test worked first time.

Phillip Beadle has been working on a module template to help guide module developers to create modules using this development paradigm - so if you are interested in this methodology keep checking back here for news.

 

Tags:

Re: Test, Build, Test, Build

Thank you this practical walk-thru has been helpful. When I saw the "AddIndividual_Should_Insert_The_Individual_Into_The_Database" I knew it wasn't a DotNetNuke project because we have an API for that :)

By AdefWebserver on   6/2/2008

Re: Test, Build, Test, Build

This is from my "Family Tree project" on codeplex. I am building a library of services and two front-end components - an MVC application and a DNN module (using Phils Test Driven module concepts)

By cnurse on   6/2/2008

Re: Test, Build, Test, Build

The comment about the API was a joke because of course you know about it because you wrote most of it :)

By AdefWebserver on   6/2/2008

Re: Test, Build, Test, Build

Wow. Thank you very much. My manual process is too time consuming. If I have this framework. It will speed up my testing and development process.

By kingcomtech on   6/2/2008
 


ADefWebserver.com
DotNetNuke® Module Development Help Website
ADefWebserver.com
Get Smarter Mail, SmarterStats, SmarterTickets
Windows mail server, web log analytics, and customer service management software - Free Editions Available!
www.smartertools.com
DotNetNuke Modules, Skins, Training and Consulting
If you want DotNetNuke done right then look no further. Developed Solutions provides module development, skin design, user and developer training and consulting. Based in Adelaide, Australia, we offer our services worldwide.
www.developedsolutions.com.au

DotNetNuke Corporation   Terms Of Use  Privacy Statement
DotNetNuke®, DNN®, and the DotNetNuke logo are trademarks of DotNetNuke Corporation
Hosted by MaximumASP