Typemock: Past, Present and Future
InfoQ: Why was Typemock created?
that developers didn't practice TDD (Test Driven Development) because writing unit tests was too hard, and he wanted to create a tool which will help developers become agile. Back then, Eli was a lead developer in a large corporation. Heavily involved in the whole time-to-market process, he realized that it was extremely complicated, and that the time spent writing code was becoming longer and harder. Eli's group of over 200 developers spent two to three months writing code, which then took almost nine months to test. Of course, this had a major impact on the product's time to market.
Eli decided to investigate why this was so. He formed a team that analyzed code-writing and test processes and found that almost 90% of the bugs the QA discovered could have been solved during development. The obvious conclusion was that had the bugs been fixed at development time, the whole process would have been shortened dramatically. It was then that Eli began looking into Agile methodologies, TDD, and unit testing as a way to improve the code, the testing process, and ultimately, the product.
Eli conducted a pilot in which developers wrote tests for their code, each for their own specific application. While the team understood the value of unit-testing the code, the pilot reinforced their basic assumption that writing, learning and implementing the tests would be extremely time consuming. Moreover, they learned that putting such process into practice in a large group of developers would only make their jobs even more complicated.
The pilot was successful in that it proved that writing code-validation tests was a vital and valuable process for improving product quality. At the same time, it demonstrated that the methods and tools available for code testing were nowhere as effective as they could be.
InfoQ: What sets Typemock Isolator apart from its competitors?
Typemock: Typemock Isolator adds ‘testability' attributes to all and any code base, making testing your code much more simple. The attributes are added by using a dynamic oriented Programming (AOP) framework, so you can write code in any design and still test it, as opposed to similar tools, that require writing code in a specific way. Isolator can be used with nearly all latest technologies - SharePoint and LINQ to name just a few.
Eli wrote the first version of Typemock Isolator at home, uploaded it to his website, and started handing it out to anyone who was interested, and the developers' community immediately saw the advantage of using Typemock Isolator to write unit tests. R&D managers can also use Isolator to see how many unit tests are being performed, which gives them a much better view of work versus schedule. When asked what drove him to dive into the world of mocking frameworks, Eli says that developers had always been aware of the value of unit testing, but that the time it took them was not always worth the effort. Today, one of his greatest satisfactions is to see how enthusiastic people are about Typemock Isolator, and how they have adopted it wholeheartedly. He says he enjoys seeing how people's eyes sparkle with delight when they talk about Typemock Isolator and what it does for them. Teams that have tried it report remarkable success in unit testing and show a higher rate of TDD adoption.
Today, Typemock is a full-fledged product sold to small and large companies alike. New features are being developed to make the entire development process more agile and integrative with the development environment. Users are so pleased with its performance that a vibrant Typemock community has emerged around the world. Members of the community share information about the product, make improvements, develop add ons, implement it in agile environments, and much more - all in the spirit of making code testing faster and more accurate.
InfoQ: Why should Developers adopt Typemock?
Typemock: The value of Typemock is not only reflected in the enthusiasm of its users but is also backed up by numbers. Corillian Corporation (www.corillian.com), a market-leading provider of online banking, payment and security solutions, adopted and implemented Typemock as a means to improve the quality of their software and introduce the agile practice of writing automated unit tests. The results were astounding. Within two months of its adoption, the number of their tests increased by 500%, test coverage increased by 50%, tests are 25% faster to write, and more and more of the company's developers are using it for their testing.
"It works exactly as advertised. It's letting us test things faster and easier than we could before."
Former Chief Architect, Corillian.
Some companies have even reported that after Typemock was implemented, their code made it to QA without a single bug!
InfoQ: What are some coming features in future versions of Typemock?
Typemock: Typemock Isolator is always being improved, with more features added all the time. A new version was just released, in fact, with a brand new API. Future versions are going to have much smoother integration with Visual Studio and Visual Studio Team System. Add-ins for specific platforms, such as SharePoint and databases are also planned. Isolator will handle more software patterns much easier, and also support isolating mscorlib.
Typemock is doing exactly what Eli Lopian envisioned when he developed the first version: It is changing the world of unit testing and turning developers into agile and TDD converts.
Typemock's motto is to help developers do their job better and faster, improve the code, and enter the world of TDD and Agile as smoothly as possible. For more information about Typemock, visit www.typemock.com.
We have that in Java, if I'm not mistaken.
Re: We have that in Java, if I'm not mistaken.
Comparison to other mocking frameworks?
Specifically, I'm curious how Typemock stacks up against Rhino.Mocks. I'm not really asking Typemock to argue why their solution is better; I'm just trying to get sense for what makes it different and when I would use it instead of the others. I haven't used Typemock, but I have used Rhino.Mocks in the past.
I've personally started using Moq for my .NET mocking needs, and I've been happy with the decision so far. It's definitely a less mature product than Typemock, but I feel it's extremely intuitive and natural. I'd be curious if the Typemock folks have any opinions on Moq.
Also, responding to Vladimir, yeah, it is similar, as Gil said. I don't know the roots of Typemock, but I know Rhino.Mocks grew out of frustration with EasyMock.NET and NMock, both (now obsolete) direct ports of the Java libraries you mention.
Re: Comparison to other mocking frameworks?
While both Rhino and Moq are nice, they are usable mostly where your code is designed for testability. That means, that you are working with interfaces, dependency injection, don't use static methods, mark your methods virtual, and so on. That means in greenfield projects, where you follow design best practices, all 3 frameworks stack up the same.
However, if you don't have that, and inherited 3 years of legacy code, which you can't touch because you don't have unit tests - that's where Isolator shines. It allows you to test your code without changing it.
In that sense, Typemock Isolator is design agnostic- it allows you to write your code in any design you wish, and test it.
Re: Comparison to other mocking frameworks?
...but I'd like to know how Typemock is better/different than the other established frameworks.
There's a Mocking Frameworks Compare open source project that compares Typomock Isolator, Rhino Mocks, NMock2 and Moq.