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
- Anonymous
February 05, 2013
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>