Typemock Isolator 5.0 Released

Well, this is a first for me – a major release. Fifth for the product. Aren’t we mature? There are two major features in this release. Let’s start with the new licensing scheme.

There are now two types of licenses (and separate installers for each) depending on their use: Commercial and Open Source. That’s right, you can now use the power of Isolator in an open source project.

To make things even clearer, we split the commercial license into two: Personal and for organizations. These two have different pricing schemes. Obviously, usage in open source projects is free.

When you run the new installer, depending of what type of licenses you have now, you will be prompted during the installation about how the new license scheme affects you. For community and professional licenses: Please read it, and act accordingly. You can get much more information on how the old scheme translates into the new one here.

All packages – Commercial, Personal and Open source include ALL Isolator features. You are bound by the license you choose to use, but you get all features, including the new API.

Which leads me to the second feature – the new Triple-A API. It comes in a shiny new Assembly and namespace, TypeMock.ArrangeActAssert, which uses .Net 3.5. This is only the beginning, folks, so your feedback is appreciated. We intend in future releases to cover all Isolator’s current features. Here is the list of the supported features in 5.0:

  • Object creation:
    • Default: All void calls are stubbed, and you must specify return values
    • All methods are called in their original implementation
    • All void calls are stubbed, all others return nulls (or 0 for value types)
    • All void calls are stubbed, all others return fakes, which their methods return fakes, and so on recursively.
  • Swapping a fake’s behavior with a future created instance. This is similar to the MockManager.Mock()
  • Setting behavior on method calls (WhenCalled API)
    • Return a fake value
    • Call original method
    • Ignore a void call
    • Throw an exception
  • Verification that calls
    • were called with exact arguments
    • were called with any arguments
    • were not called
  • Chains are also supported both in WhenCalled and Verify

What does it look like? here’s an example:

public void FutureInstance_StubMethodAndVerifyItWasCalled()
{
RealLogger fake = Isolate.Fake.Instance<RealLogger>();
Isolate.Swap<RealLogger>().With(fake);

Isolate.WhenCalled(() => fake.Increment()).IgnoreCall();

RealLogger logger = new RealLogger();

logger.Count = 0;
logger.Increment();

Assert.AreEqual(0, logger.Count);
Isolate.Verify.WasCalledWithAnyArguments(() => fake.Increment());
}

We’ll be posting in the next couple of days some examples of the new API. In the meantime, have a look at the updated examples and help file that are installed with 5.0.

I repeat what I said on a recent post: NaturalMocks and Reflective API are still valid, alive and kicking. For anything that the new API currently don’t cover (e.g static methods, private/hidden members), you can use them. What we don’t recommend (for now) is creating mixes between the old and new APIs. Our plan in the next releases is to provide coverage of all Isolator features with the new APIs.

What else? Well, we are also releasing an Alpha of our new product today for finding deadlocks in your code, called Racer. Isolator 5.0 is ready to work with Racer. Find out more on our Racer page.

And finally, two bug fixes (since 4.3.2):

  • When VS2008 is not installed to ‘regular’ path and running with MSTest Isolator can’t mock certain classes
  • A VS2008 crash that appeared since 4.3.1 was fixed.

Still here? Run and get it here.

  • Travis Illig

    Can you clarify a little on the open source license? I have a commercial license through work, a personal license for personal projects, and I want to use it in my open source project, CR_Documentor.

    What do I need to do? I already have 4.3.1 installed. Do I need to install a new version? Do I tell my project contributors to come over here and download the open source version? What if they, too, already have personal licenses? Do I “switch licenses” somehow based on which project I’m using?

    Maybe a blog entry on “getting Typemock Isolator into your open source project” is in order. I’m eager to use it, I just don’t want to confuse my contributors or do anything against the licensing terms.

  • Gil Zilberfeld

    Travis,

    I’ll be posting soon about the meaning of the OS license. I’ll try to cover the different scenarios you described.

TOP