Showing posts with label moles. Show all posts
Showing posts with label moles. Show all posts

Thursday, November 22, 2012

Microsoft Fakes Bait and Switch?

Is it possible Microsoft tricked developers into adopting their code isolation framework in an attempt to force upgrades to the Ultimate version of Visual Studio 2012?

When I first learned about the Moles framework from Microsoft Research, I was excited at the possibilities for unit testing and began presenting it at user groups and conferences. I was even more excited after Microsoft announced that a new version of this framework, named Fakes, would be included with Visual Studio 11 (now 2012).

Microsoft's documentation originally indicated that Fakes would be included with both Premium and Ultimate, but early adopters noticed the VS2012 Premium release candidate did not include Fakes and the documentation was later updated to indicate it would only ship with Ultimate.

Meanwhile, Moles is no longer supported in VS2012. So where does this leave those who adopted Moles and use the Premium version of Visual Studio? It appears they will be forced to upgrade to Ultimate or abandon the use of Microsoft's code isolation framework.

I choose to give Microsoft the benefit of the doubt. I'm sure the original intention was to ship Fakes with the same versions as were previously compatible with Moles. Discontinuing Moles made sense when a new-and-improved framework was slated to take it's place. The decision to restrict the use of Fakes to Ultimate was surely made without considering the ramifications to their existing customers.

The question remains of what, if anything, Microsoft will do to address the needs of those customers that have been left out in the cold.

Tuesday, May 8, 2012

Testing the Untestable with VS2012 Fakes

One of the new features included with Visual Studio 2012 is the Fakes Framework which offers the ability to detour code at runtime and isolate functionality for true unit testing, regardless of whether the code was written with testing in mind.

I began speaking on Fakes back when it was a beta product from Microsoft Research called Moles. While the core functionality remains the same, Microsoft has streamlined the implementation and now calls the detour mechanism a shim rather than a mole.

If you have attended this or another of my talks at a user group or conference, please take a moment to share your feedback on SpeakerRate.

The PowerPoint is available on SlideShare and below are links to the code demonstrated in the presentation.

Demos
Y2K Checker (simple introduction)
DateTime Audit (avoiding non-deterministic tests)
File Reader (shimming file system access)
Repository (stubbing interfaces)

Resources
Visual Studio 2011
Fakes MSDN Documentation

Thursday, February 9, 2012

Microsoft PEX and Moles

Microsoft Research is currently beta testing a couple new frameworks that can make unit testing your code a breeze. Pex is a testing tool that analyzes code and generates unit tests. Moles is a framework that isolates code with dependencies on other application layers or frameworks. With just a few mouse clicks, you can generate suites of tests against code that previously may have been difficult or impossible to test.

Tonight I'll be giving a presentation on these technologies at the Nashville .NET User Group. For anyone who can't make it you can watch and discuss it in my Google Hangout. I'm hoping to post a video of the presentation to this blog within the next couple weeks. I'll also be giving a similar presentation and Code PaLOUsa on March 17th. Below are links to the demo solutions and Prezi used in the presentation.

Presentation on Prezi
Using Moles to Mock DateTime (Y2KBug.zip)
Using Moles to Stub Interfaces (MolesDemo.zip)
Using PEX to Generate Parameterized Unit Tests (PEXDemo.zip, PEXDemo-Result.zip)