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 › LiveID 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.

 


Maximum ASP
  Ads  
r2i.ntegrated
 


  Sponsors  

Meet Our Sponsors

Webhost4life, specialists in DNN hosting
Mad Development is a full service interactive agency focusing on the merge of design, technology, e-commerce, and affiliate marketing by providing total website solutions.
AspDotNetStoreFront - E-Commerce by Design - The Leading ASP.NET shopping cart platform for developers!
Click here to go to dev.live.com for Windows Live developer resources
SteadyRain
DataSprings - Great Ideas. Always Flowing.
 


Authentication Provider :: LiveID

The LiveID provider allows users to authenticate to the website with their LiveID username and password.

 


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

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

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
 


Venexus, Inc.
Need custom a custom DotNetNuke module? From module planning to deployment, including training and support, Venexus developers deliver end-to-end web solutions on time and on budget.
www.venexus.com
Bring2mind
Document Centric DNN Module Solutions
www.bring2mind.net
WEBPC™ DotNetNuke® sites for Small Business
WEBPC™ are internet consultants and web hosters catering to the small business market.
www.webpc.biz

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