ShimNotSupportedException when using ReSharper unit test runner


I recently did some work using the VS 2012 RC together with R# 7. I needed to use the shim functionality from Fakes but ran into trouble. My unit test failed with a ShimNotSupportedException. After a little bit of searching I realized it was because I was using the R# unit test runner (since it’s much faster and report failures in a much better way than the built in runner (if you ask me). Because if I ran the tests using the VS runner the tests passed. Annoying and I can only hope this is going to be resolved by jetBrains but meanwhile I’ll be using the following work around:

  • I mark every test that uses Shims with the TestCategory attribute giving them a value like “UsingShims”
  • Then in my R# options for unit testing I fill in the same value in the box for “Don’t run tests from category”.

This way my tests using Shims are ignored by the R# unit test runner. You might think this is a bad idea and generally it is. However I use Shims rarely so there are relatively few tests that are ignored this way. So while working on things that do not require Shimming I can continue to use the fast R# test runner. And when I need to use Shims I just use the VS runner. Not perfect but a decent compromise for me in this case.

Comments (1)

  1. I've learned that the proper way to fix this is to add a RunSettings file. If one is missing a default one will be created with the wrong settings for this to work. Your RunSettings file should contan this:

    <RunSettings>

      <MSTest>

        <SettingsFile>your.testsettings</SettingsFile>

        <ForcedLegacyMode>false</ForcedLegacyMode>

        <IgnoreTestImpact>true</IgnoreTestImpact>

      </MSTest>

    </RunSettings>

Skip to main content