October 2006 - Posts

TestDriven.NET 2.0

I'm very happy to announce that TestDriven.NET 2.0 RTM is available for download. It has been a long time in the making, but is finally ready for the world!

I would like to thank Grant DrakeSean McCormackEli LopianCharlie Poole, Lutz Roeder, Andrew Stopford and Peter Waldschmidt for giving TestDriven.NET something worth integrating with. Without these people's support TestDriven.NET 2.0 never would have made it to completion!

Below is a gallery which gives a taste of what's new:

Reflector Integration

Code Coverage with NCover or Team Coverage 

 

Your new Best Friend ;-)

Test With .NET 1.1 (from Visual Studio 2005)

 

Pluggable Unit Testing Frameworks

TypeMock.NET Integration

For information about what's new, please see the release notes included with the download. An updated quickstart and extensive documentation will be coming online soon.

Thanks to everyone who has helped get information about the new version out. Here are a few posts that cover the new functionality:

"The first picture of the page being lovely, the shank, making, the wind which it increases." - I love the Google translator! Thanks 菊池:)

If you are familiar with Digg, you might get the joke here. ;)
10 Reasons You Should Digg TestDriven.NET 2.0 - Digg Programming (1 digg...)

Let me know if you have any questions.

Posted by Jamie Cansdale | 35 comment(s)
Filed under: ,

MVP Invites for Africa

Michael has just reminded me that I have 3 MSDN Premium Subscription with Visual Studio 2005 Team Suite invites that I need to find a good use for. As tempting as it may be to organize a Winter of Express - Extension Writing competition ;), I have decided to do something more constructive with my invites.

I'm thinking of organizing an auction along the same lines as the one Julia Lerman did for Banda Aceh. My father is currently involved in the setting up a pump workshop in Malawi. The pumps they will be manufacturing are made from ABS plastic and are virtually indestructible. The only perishable part is a rubber valve which commonly lasts for 3 years and a replacement can be cut from an old tire. The focus is very much on appropriate technology.

The workshop will bring work to the local community and clean water to villages all over Malawi. The founder of the charity that is setting up the workshop has agreed to pay all administrative overheads (air fairs, travel etc) so that any money donated goes directly to the workshop and the manufacture of pumps. You can find more information about the charity here.

If you are an MVP that would in principle be willing to donate an invite, please comment or drop me a note. Not commitment yet, I'm just canvassing people to see if you think it's a good idea. I know the subscription you get from the invite is not for resale, but I couldn't find any restriction on auctioning the invite card itself. It could potentially raise a lot of money for something very worthwhile.

Here's a video about a similar workshop that was established Madagascar.

Posted by Jamie Cansdale | 4 comment(s)
Filed under: , ,

What happened to TestDriven.NET 1.0?

In the comments "A" says:

To be honest, I'm with Microsoft on this one. It seems to me that the four salient events were:

Jamie releases TestDriven.NET free for everyone to use
Jamie is made an MVP
Jamie then makes TestDriven.NET non-free
Jamie's MVP status is removed

Personally I think it was very bad behavior, taking a free product and starting to charge for it. (Most other products that have developed along similar lines continue with the free base product and charge for 'Professional' or 'Enterprise' editions with extra features.) Starting to charge for a product the community supported and advocated is like a slap in the face for that community, and I can see why Microsoft don't want the MVP badge to be associated with that. It could be that they don't want to give visibility to a product that competes with a small portion of TFS, or it could be that (as Roy Osherove says) they don't like him introducing features to the Express editions, but I think that they just don't like the way he treated his community of users. Now there's no indication there ever was a free version, and although you can download the latest version you're expected to pay for it unless you're a trial user, a student or an open-source developer. If you object to the new licensing, there's no way to download the previous, free version that doesn't have the new licensing terms. Please note that I don't object to paying for software, and I don't think the asking price of $95 is too much. What I object to is the 'bait and switch' approach of getting a community advocating a free product and then robbing the community of that free product.

There is only one reason that TestDriven.NET 1.0 is not available for download. Believe me I don't want to be in the precarious position where I only have a pre-release version of my product available. There are many companies that won't touch pre-release software, no matter how stable it may be! As far as these companies are concerned I don't even have a 1.0 version!

You can see from the screenshot below why I removed it:

When I was developing TestDriven.NET 1.0, I didn't have an MSDN account. My primary job was as a Java consultant. Working on TestDriven.NET was something I did between consultancy gigs as a hobby. While Visual Studio 2005 was being developed, the Express SKUs were released to the general public before the Team Suite betas. As a hobbyist .NET developer it was only natural that I use and track changes in the Express SKUs. It took me about a day to have TestDriven.NET working again when beta 2 came out.

Last year when I was made an MVP, I did have access to Visual Studio 2005 Team Suite. This is when support for Team Suite's code coverage was added. When Jason Weber and my then MVP lead Ben Miller requested that I remove support for the Express SKU, I was very conscious that I was still a hobbyist .NET developer. The only reason I had access to Team Suite was because of my MVP status. I thought dropping support for the Express SKU without a good explanation would be a betrayal to other hobbyist developers (especially if the reason for dropping it was to keep my MVP award!)

Removing the TestDriven.NET 1.0 download had absolutely nothing to do with removing the free version. In fact the license for TestDriven.NET 1.0 is very similar to the license for TestDriven.NET 2.0 Personal. You can use them for free if you wish, but you can't redistribute either of them. I do request that people using TestDriven.NET on commercial projects buy a professional license. Enterprise licenses are only required if you are redistributing TestDriven.NET inside your organization. I think it's a little unfair to call this 'bait and switch'.

Posted by Jamie Cansdale | 18 comment(s)
Filed under: ,

Our Community?

I was interested to discover that some ex-MVPs were given notice when their award expired. I received no notice from from the award program. The first indication I had was when a download failed to resume when using my MVP MSDN account. I was on holiday in Paris with my girlfriend and was in the middle of downloading the Visual Studio 2005 Std SKU (she was not very happy).

The cynic in me suspects I was not notified in order to prevent questions being asked in a teleconference that had been scheduled. Whatever the reason - the broken download meant there wasn't going to be a new version TestDriven.NET released for a few weeks at least.

The first concrete evidence that I had not been re-awarded came when Jason Weber (who manages the Visual Studio Ecosystem product team) emailed me with the following:

As you know your MVP affiliation was not renewed this year. Based on
your current actions and community participation rate I can't award you
MVP status. I hope that you will harness your Visual Studio
extensibility passions and earn VSIP MVP status over the coming year by
integrating through public API's and supporting our community.

Also, I should let you know that almost everyone you and James Avery
have emailed work for me. My team is aware of our discussions and
they've been asked to direct your communications to me.

I can assure you that all APIs that I used are in fact public. What's more they are documented and have existed since Visual Studio 2002! The only person I emailed was my now ex-MVP lead Ben Miller. As far as I know, the only person James Avery had been in contact with was Josh Ledgard (way back in December). James was helping me find a way to prevent this from blowing up!

As I'm sure you can imagine - this one email destroyed any trust that had been established in our teleconference. Does anyone really expect me to join VSIP when the person who manages it treats his customers like this?

Posted by Jamie Cansdale | 16 comment(s)
Filed under: ,

MVP Code of Conduct

I wanted to let everyone know I'm now an ex-MVP (my award wasn't renewed this year). I'd like to thank whoever it was that nominated me last time. It was fun while it lasted and I enjoyed meeting all the other MVPs at the summit.

Unfortunately your community participation rate over the past year (in any of the communities including VSIP and ASP.Net) is well below the required level. Even if we were to look beyond the MVP code of conduct concerns I don't believe we could justify reinstating you based on participation.

I'm curious to know what exactly the MVP code of conduct involves. Can any current MVPs comment on this? I don't remember seeing anything in my welcome pack.

Posted by Jamie Cansdale | 43 comment(s)
Filed under:

TestDriven.NET + TypeMock Bundle

You may have noticed a few mentions of a TestDriven.NET + TypeMock bundle. The bundle has been available on the TypeMock.NET site for a number of weeks now. I didn't immediately make the bundle available on the TestDriven.NET site. This was mainly due to time constraints (I was too busy finishing TD.NET 2.0), but I was also being a little cautious.

The first time I saw what TypeMock could do I was impressed. What really blew me away was how readable tests that use TypeMock were compared to other mocking frameworks. However I do know that when something looks too good to be true, it often is. I wanted to see how I felt after using TypeMock on a real project for a reasonable amount of time.

Just over a month ago I started using TypeMock in my TestDriven.NET unit tests. The first thing I did was refactor some tests I had that used another mocking framework. They shrank down to 1/3 of their original size and became much more readable because of it! I then started to do some test first bug fixes. To be honest, this is something I hadn't been able to do for a while. Reproducing some quirk in the Visual Studio object model with a unit test was too much work to be worth it. When I started using TypeMock I suddenly found it was practical to mock Visual Studio and start recreating issues that has been reported. I suddenly found myself being productive again. Fixing bugs and silly mistakes without having to redeploy the application! :)

Now that I know TypeMock is for keeps, I'm more than happy to make the bundle available on my site. The bundle includes 1 year of updates and support for TestDriven.NET and TypeMock Enterprise. It works out at a 25% discount on TestDriven.NET + TypeMock Enterprise combined. There is a limit of 5 bundles per company and the offer will run until the end of October.

You can purchase the bundle from the TestDriven.NET site here, or the TypeMock site here. In the interest of full disclosure, I get 5% of any TypeMock sales made on the TestDriven.NET site.

Google Code Search

At the moment Google appears to be spidering CVS repositories and archives (ZIP files etc.) It surely won't be long before Subversion is included in that list since that is what Google Project Hosting uses!

Lots more info on Google Blogscoped including:

Additional to the regular web interface, Google Code search also comes with a REST API (simple parametrized GET queries returning XMLs). This way you can build code search functionality into existing programs (like IDE’s). Here’s the result XML for the sample query “hello world”.

Here is an example search for files in the NUnit package on Sourceforge.

Update: It looks like it does already support Subversion as you can see from their code submission form.

I like the CVS example. :)

Posted by Jamie Cansdale | 4 comment(s)
Filed under: , ,

CoverageExclude

Eric Sink recently wrote an article, advocating the use of code coverage. In the article Eric writes about a hobby project of his where he has managed to achieve 100% code coverage. The following may be of interest to anyone who finds themselves driven towards such ridiculous levels of coverage. ;)

When using NCover, particular methods and classes can be marked with an attribute so they are excluded from the coverage report. TestDriven.NET tell NCover to use an attribute called 'CoverageExcludeAttribute' as this special attribute. When using the NCover console application, this option is:

//ea CoverageExcludeAttribute

The 'CoverageExclude' attribute isn't defined in an external assembly. This is because 'CoverageExclude' is most likely to be used in non-test code. We don't want to create a dependency on another assembly (just as you wouldn't want to reference 'nunit.framework' from non-test code). Instead the 'ExcludeAttribute' can be defined in the empty namespace as follows:

class CoverageExcludeAttribute : System.Attribute { }

Once defined this attribute can be used to exclude specific methods and classes from the NCoverExplorer coverage report.

.Net 2.0 TreeView Performance is killing NCoverExplorer

If you are familiar with the Windows Forms TreeView control, please take a look at Grant Drake's post on performance issues under .NET 2.0. You will find example code and a graph comparing its performance under .NET 1.1 and .NET 2.0.

It is upsetting to see the otherwise snappy NCoverExplorer turn into treacle when only .NET 2.0 is loaded (.NET 1.1 has precedence in the 'App.config' file). If you can find a solution, please let Grant know!

Posted by Jamie Cansdale | with no comments
Filed under: ,
More Posts Next page »