A Very Quick Resharper 3.0 Review

I'm currently working on a project that contains C# as well as VB.NET. 95% of my time is spent with C#, fortunately, since that is my strength, but since I do have to foray into VB and since I'm in love with Resharper, I downloaded the official release of Resharper 3.0 today and tried it out. Along with the VB.NET support it now has, I was interested in seeing any other cool features they've added to it.

Unfortunately I came away disappointed...at least for now. By no means did I spend a huge amount of time digging through all of the functionality, but, then again, the reason I didn't was because I am a bit of a TDD hound and I really don't like what they've done with the integrated unit test runner. There are two changes I don't like at all:

  1. In Resharper 2.x the unit test runner leaves a stacktrace of a failed test, along with a link that can be clicked that brings you right to the line in the code that failed. 3.0 appears to have left this feature out and to me it's a HUGE mistake. In 3.0 you are given one line that says the test failed and the reason it failed. You can click on this line but all it does is take you to the test method signature, not the offending line. This wastes my time and energy compared to the 2.x version, to the point where the waste is quite annoying. If JetBrains never gave me the stacktrace-and-link feature in 2.x I'd probably be loving 3.0, but why would they take away this feature for a new version? The person/team behind this decision was clearly not on the ball the day it was decided to remove such a wonderful feature. [Note: After writing this blog post, I received correspondence from JetBrains that there is a "Preview" button that will show the stacktrace output. Although I did try the preview button at one point, I didn't see the stacktrace, so I'll assume I was using it incorrectly. On the other hand, I'm not sure why the original, simple, and easy to use feature was made more complicated. Do I need to see some test failures without the stacktrace and some with it? Smells like needless complexity in the UI to me.]
  2. Resharper 2.x groups successful, failed, and ignored tests in three different tabs, and at the top of each tab I could see the number of tests belonging to each group--all at once. Because of this nice feature I could glance at the tabs and immediately tell how many tests belong to each group. This is gone now, too, replaced by an ability to filter out tests by their success, failure, or ignored categorization. The problem with this is that I don't have the same high-level view that I used to, because the tests are all stored in the same window (no more tabs) regardless of the success, failed, or ignored category they belong to. I don't like this at all. Instead, the test runner interface is uselessly spruced up a little bit (I'm not sure this is even true, but I'll give JetBrains the benefit of the doubt). When are people going to realize that it's the solid features of a frequently used tool that are important and not its cool colors or whizbang widgets? I'm not a kid playing with a toy...I need to get work done as fast and easy as possible.

I could've maybe looked by these issues. Maybe. However, when I decided to grant JetBrains my forgiveness and move forward, I started writing a unit test using our trusty "xtm" live template (which generates a test method). Instead of the code appearing as it always has, the [Test] attribute was where it should be but the test method itself was way over to the left instead of properly indented where one would expect a method in a class to be. At this point I was thinking, "Hmmm....this hasn't been a good start. Maybe there is a setting somewhere to fix this?"

I tried to find a setting to no avail. Just before I was going to give up hope I tried clicking on the familiar Resharper menu and it froze up in Visual Studio. No matter which menu I clicked nothing happened.

And this was then followed by a Visual Studio crash. At this point my test was over. No more Resharper 3.0 for me until I hear they've straightened out the kinks. I'm not worried about the live-template-generated test getting placed in the proper position or the Visual Studio crash. These things I'm quite confident they'll get right. I am concerned, though, with the missing features in the unit test runner. Do they plan to add them back? If not, why not?

There was a new concept of a "test session" that could maybe give me what I'm looking for in terms of the success, failed, and ignored tabs. Perhaps one can create a "test session" for each category, but I'm not sure. Regardless, I probably won't switch back until, at the very least, they add the failed-test-stacktrace back in. This is something I totally love and I don't want to work without it.

Those that know me know how much I love Resharper. Hopefullly they'll get things tidied up in 3.0. I'm usually extremely confident in anything JetBrains does (their dotTrace tool is excellent, too). This time, though, I'm not so sure. They'll have to prove it to me.

Comments



Hey steve.

I too ran into the same issue you reported with your templates. However there is a fix for this. Apparently in 3.0 they allow you to declare the context(s) under which a template can be run. (not sure if you could do this in 2.5).
What you need to do is go to the live templates. Click on the one you want and hit Edit. Then click the hyperlink just under the abbreviation text box (it will say something like: Available everywhere) and everywhere will be hyperlinked. A text box pops up and you can select the context under which the template runs. Once you've done this the formatting comes back.

I got the preview button working as before ... however the unit test session now seems more noisy to me and while's there is still good info there it's gotten harder to read.

On another note... I was playing around with MS's test stuff in Team System the other nite and Resharper absolutely blows it away. Resharper feels like a nice sports car and the Unit Testing stuff in team feels like a wheel :P



Hi Jay,

Thanks for the tips...I'll definitely try them out. Great to know that if I switch over again I can get the live templates back to normal and that I can see the stacktrace of a failed test by using the "Preview" button. I was in the midst of trying to get the live template feature to work as before and that's when VStudio crashed on me, so I said, "Back to 2.5 for me so I can get some work done."

I've been in a bit of correspondence with JetBrains over the preview button functionality, and the last I heard was that they are going to have "Preview" as the default. I also went back and forth with them a little about having the tab windows for success, failed, and ignored tests because I liked that feature--it was nice and easy for me to see everything at once, with the count for each category right on the tab. I'm not sure if they are going to give the tab feature back, but perhaps.

Makes me wonder about trying to take software to the next stage. I liked what they had before. Simple and easy to use. Sometimes features are well intended but don't really bring anything to the table besides confusion. I didn't get the chance to play with it long enough to really do a thoughtful analysis, but it did seem to me that all they managed to add was confusion to the UI. Maybe the concept of having multiple test sessions going will be good, maybe not.

And yup, you were right....we don't have anonymous comments enabled. You wouldn't believe the number of spam comments we get.

Good to see you around these parts, too.

~Steve



hmm. Not sure if you have moderator accepted comments but what I posted yesterday hasn't appeared so I'll try again.

Steve,
I am using .Net 3.0 and the preview pane does work as JetBrains mentioned, but the Unit Test session and the Unit Test Explorer windows do add more confusion to the running of unit tests. If I run an individual unit test, then do some stuff and run a different one... The old one I ran doesn't "clear" out nor does the session number change. It's all a bit discordant :P

As for the templates, I got them to work. Apparently you have to indicate what "context" the templates apply to. So if you goto Options-live templates click on one of your templates then edit it. All you need to do is click the hyperlink just under the template abbreviation text box and in the edit window that pops up designate the tempalte as a C# template and you are good to go!

On an unrelated note ... I got to play around with Team Systems's unit testing capabilities and they are VASTLY inferior to nunit and resharper :P



Update:

I installed the latest R# 3.0 last Friday and I still don't think it's ready for primetime. It definitely behaved much, much better, but I experienced an annoying slowdown when opening up VB files. Whenever I typed in a VB file it would take somewhere in the realm of 10-15 seconds to see the characters show up on screen, and my CPU utilization was continuously very high. Just this morning I reverted back to 2.5.3.

I didn't always get this slow behavior, BTW, but often enough that my level of frustration was reached. Once it did start happening, it kept happening.

R# 3.0 is getting close, but in my eyes it's not quite there yet.



As for problem#1. I read this blog and regretted updating from R#2 to R#3, but discovered now that there is a simple solution (phew).
- Alt+P toggles the output-pane for the "unit test sessions" tab.
- The "unit test sessions" tab also have a button (Show Output) that lets you choose wether to show the output-pane to the left, or bottom of, the unit-test explorer



I finally did upgrade to R# 3.0 and have been running the latest version for quite a while (the one they released before they start working on R# 4.x). I like a lot of things they did, mainly:

1.) Reformatting the layout of a class is really nice. You can even now have regions automatically wrapping specific sets of code. We don't usually like regions very much, but we do wrap our member variables with a region, so having this done automatically is a great feature.

2.) They have fixed the build issues related to running tests, especially when debugging tests. It used to be that if you hadn't changed any files and you chose to debug a test, a lot of build processing would first have to finish before you got to debug. This is not the case any longer.

3.) Overall it seems faster than previous versions

4.) I could probably list more but you get the drift: Aside from my next rant, they've done some great things to an already great product.

By far the biggest drawback to what they've done, as I've mentioned above but am now completely sure of, is completely destroy the unit test runner interface. It is horrible. I think it is the worst change I've ever experienced to a product that I regularly use....ever. Ever. I'm so disappointed with it. They've taken a perfectly fine interface and added all these bells and whistles that either don't work or that pollute your experience. Resharper 2.x's unit test runner was perfect in my mind. It did everything I want and it was so simple and easy to use. The new one is terrible, regardless of some of the "workarounds" above that really don't solve much.

I'm once again seriously thinking of going back to 2.x. It's too bad because the features they've added to 3.x are great other than the new unit runner. I use the unit runner so much that it greatly outweighs any of the other features.

It reminds me of when I was in junior high school, in art class. We were using scratch paper (the stuff with the black coating that you scratch to reveal a white or colored layer underneath). I did a scene with dinosaurs and it was really coming out great for a while. I couldn't leave it alone, though, and wanted to keep adding to it. Before I knew it my simple but nice scratch art turned into a mess. Yup, JetBrains has done the same with their unit runner.

Hmmm...I wonder if I can use the old unit runner with R# 3.x? I'll have to poke around a bit to find out.