Which unit testing frameworks have ASP.NET MVC extensions? - asp.net-mvc

I normally use MSpec and the fantastic Machine.Specifications.Mvc extensions, with extensions as ShouldBeAView(), ShouldBeARedirect(), ShouldHaveModelOfType<T>().
But I'll be writing a project for a client and since BDD and MSpec are not everyone's cup of tea and they'll be updating the code in the future I wanted to look at alternatives.
Just to compile a list of which possible Unit Testing Framework candidates for a coming ASP.NET MVC (3) project, which frameworks/libraries expose similar unit testing extensions for MVC?
These extensions are easy to write, I know, but I want to avoid reinventing the wheel.

Try here:
http://mvccontrib.codeplex.com/wikipage?title=TestHelper

Related

does nhibernate.burrow work with mvc.net and dot net 4.0 framework

I am thinking of using nHibernate.Burrow in my mvc.net application. However there are several troubling things that I have read and I am hoping to get them sorted out before I embark on the project:
Are there any issues with running .Burrow with mvc.net?
Are there issues with running .Burrow with the 4.0 framework?
How tightly coupled is .Burrow with the nHibernate? I have read several things indicating that I have to use the same version of nHibernate as was used to create the .Burrow binaries.
Any other thoughts that people have?
Yes, you should use Burrow with appropriate NHibernate version. If you want to use it with another one you can try to put assemblyRedirect in web.config file.
And I wouldn't try to use Burrow with MVC. Yes, it has Session magement and some other usefull featrures, but they are tied to ASP.NET Web Forms.
As a base framework for mvc applications I would suggest Sharp Architecture. It has all required binaries and all versions are latest.

Are there add-on libraries or tools available for ASP.NET MVC development?

My first experience with ASP.NET MVC and the Entity Framework has raised my interest in this framework and I would like to implement some basic applications, covering the basic requirements of real-world web applications. So far the support given by VS 2008 is already impressive.
For some areas however, it might be a time saver to use existing add-ons or libraries of all kind. Are there already commercial or open solutions which I should take a look at?
Some of them:
S#arp architecture
MVCContrib
MVC Project Awesome
Be sure to check out example projects.
Telerik has made some UI stuff too (haven't checked out yet).
You might be interested to check out other view engines like:
Spark (this one kicks a$$)
NHaml
Haack recently posted about .less - might be worth checking out for managing css
T4MVC by David Ebbo library is a nice solution how to make your asp.net mvc app more strongly typed.
For UI testing - Watin framework.
Here's Jimmy talking about implementation and solution of common problems when doing UI testing. Seems to me that he prefers Gallio + NBehave + MbUnit combo but i personally like BehaveN (it doesn't need test runner, is not tied with particular unit test framework).
HtmlAgilityPack is a nice tool if working with raw html is necessary.
MvcTurbine might simplify technical part of your asp.net-mvc project.
Found useful MvcExtensions extension made by Kazi Manzur Rashid.
For managing javascript and css - Chirpy.
Object to object mapper for MVVM support - AutoMapper.
elmah is great for error logging.
Not necessarily MVC specific, but:
MVC lends itself to take advantage of all the jQuery UI controls and pretty things.
There's also Elmah, and StructureMap for DI/IOC.
Nothing much else to add here except that xVal is a really nice validation library, utilising jQuery. My company is currently in the process of moving from a 'roll-your-own' solution to this.
There are some useful links at the bottom of this post.
Including:
MVC HtmlHelper for Gravatar
Paging HtmlHelper for ASP.NET MVC
Marquee and GridView HtmlHelpers for ASP.NET MVC
ReCAPTCHA HtmlHelper (and also a solution to use ReCAPTCHA in ASP.NET MVC)
ASP.Net MVC Extension method to create a Security Aware Html.ActionLink
CheckboxList Helper
Also, keep an eye on some of the big component developers. Telerik has a demo of some MVC components and I hear DeveloperExpress has some on the way too.
Just to add details to Telerik's MVC support:
We just kicked-off our official support for ASP.NET MVC with last week's CTP. Our new UI Extensions for MVC will aim to bring the productivity of WebForms to MVC without violating any MVC concepts. Our new extensions are built from the ground-up specifically for MVC and they will leverage jQuery on the client for all behaviors and Ajax.
Further, the Extensions are completely open source, licensed under the Microsoft Public License (MS-PL) - the same license that the ASP.NET MVC framework ships under. You can find the CTP source today on Telerik.com or on CodePlex:
http://telerikaspnetmvc.codeplex.com/
All of that said, this is our early support. We will ship the first 3 UI Extensions in November and build from there in 2010. The first planned Extensions are:
Grid
Menu
TabStrip
You can find more details, demos, and downloads on Telerik.com:
www.telerik.com/mvc
Hope that helps.

ASP.NET MVC Unit Test

I'd like to try unit test in ASP.NET MVC framework. But I don't know which unit test framework I have to choose.
NUnit, xUnit.net, MbUnit. or the unit test framework included with Visual Studio, which one is better?
If you are interested in following BDD guidelines, I highly recommend xUnit.NET with Moq as the mocking framework. The two are some of the most forward looking and modern unit testing frameworks available these days, and combined they make both a powerful and flexible unit testing platform. xUnit.NET is extremely extensible as its Fact and Trait attributes can be extended with your own attributes, and the testing frameworks behavior can be changed to suit your needs.
A great example of this flexibility is the ObservationAttribute and supporting framework to allow BDD style testing with xunit.net, found here:
http://iridescence.no/post/Extending-xUnit-with-a-Custom-ObservationAttribute-for-BDD-Style-Testing.aspx
I use the above BDD-style testing to create Test-Class-Per-Unit style BDD tests for my ASP.NET MVC controllers (well, and everything else I unit test, too.)
ASP.Net MVC doesn't make any specific demands of a framework, any will work just fine. NUnit is the most widely used, and for that reason it is my default choice.
Once you get into unit testing, some of the other frameworks offer different advanced features that you may like to check out.
I don't know anyone using the MS unit testing framework.
I would recommend to start from xUnit if your have not used any testing framework before. It's hard to decide which framework is better but I think that xUnit is the "most modern" among NUnit, MbUnit and MSTest. Start learning xUnit from this article and then this
I am using MSTest :) so now you know one ;)
Seriously, I think that MSTest is a the best framework for the start with TDD.
It is liteweight and it is generating all that you need for the wrapup and the most important thing, it is integrated in the visual studio...so, why don't you start with mstest and later on you can switch to advanced frameworks with no problems.
So in short, I would recomend a MSTest.
cheers

Functional test software/framework that covers Asp.Net Web Apps?

I recently began to use the NexusLight, a functional test automation framework.
Are there more frameworks that does a similar job?
Related question: End-to-End application testing from a users standpoint
I haven't really looked into NexusLight but I think InCisif.net is supposed to provide a functional test framework as well. You could look into it.
I test asp.net web apps for years and the only tool I use is Watir.
VSTT 2010 should be a good bet if you are looking for functional test automation. Web Services Testing, UI testing, Biztalk testing and Data Driven Testing Support. Please look at VSTT - http://msdn.microsoft.com/en-us/library/ee338734(v=vs.90).aspx
You can also try VSTT - http://blogs.msdn.com/b/slumley/archive/2009/05/28/vsts-2010-feature-enhancements-for-web-test-playback-ui.aspx
Telerik Test Tools - http://www.telerik.com/automated-testing-tools.aspx
Visual Studio UI Test Extensibility–Scenarios & Guiding Principles - http://blogs.msdn.com/b/mathew_aniyan/archive/2011/03/28/visual-studio-ui-test-extensibility-scenarios-amp-guiding-principles.aspx
VSTS Web Test Step-by-Step Primer - http://blogs.msdn.com/b/jimmymay/archive/2009/02/23/vsts-web-test-step-by-step-primer-7-minute-video-by-microsoft-a-c-e-performance-engineer-chris-lundquist-with-copious-notes-screen-shots-from-your-humble-correspondent.aspx
Found this one too:
http://www.automatedqa.com/products/testcomplete/index.asp
Unfortunately it's not free.
Reading a list made by Scott Hanselman, I found these two tools:
WatiN, to automated the tests;
WatiN Test Recorder, to automate the test code generation.
From WatiN page:
[...]WatiN (pronounced as What-in) website. Inspired by Watir development of WatiN started in December 2005 to make a similar kind of Web Application Testing possible for the .Net languages.
And from WatiN Test Recorder:
The purpose of the application is to generate code compatible with the WatiN (Web Application Testing In .NET) project.
Have a look at Seleno. It uses Selenium under the bonnet but abstracts all browser automation into Page Objects, which lead to well structured and fluid C# based tests.
It is particularly well suited to ASP.NET MVC, as each Page Object can be strongly typed (using Generics) to an equivalent MVC ViewModel, leading to a consistent relationship between View, ViewModel and Page Object.
Check out some of the samples in the Seleno codebase to see this in action.

ASP.NET MVC - Script Combine

The ASP.NET team released the script combining feature in 3.5 SP1 as detailed here http://www.asp.net/Learn/3.5-SP1/video-296.aspx. Is there a similar feature already for the MVC framework? If not, is this in scope or is it possible to somehow leverage the webforms capability in MVC? I see this site uses a custom jquery.package.master which, I assume, they have rolled themselves (maybe into the build cycle, however it is not all minified therefore I think they have manually appended the scripts together rather than some automated minify & combine task). Would be interested in any ideas how to accomplish this in MVC but I dont want to begin rolling any of my own functionality in case I will be duplicating work in progress.
Here's what I do, in case it's helpful.
In my postbuild I call a command line version of Dean Edwards's Packer. It combines the scripts and packs them for me.
For now though, I keep all of my stuff seperate and use a Helper method to include my scripts, and if the debug flag is not present it will include the packed versions, otherwise it includes the unpacked.
Another option is in the Telerik Native UI Extensions for MVC (free library and open source), called ScriptRegistar. It will combine and compress javascript for you, and is fairly feature rich. There is also a class for doing the same to css as well.
I am using this to combine +20 javascript files into one file which is downloaded by the browser.
http://www.telerik.com/products/aspnet-mvc.aspx and you can get it via NuGet.
Every day there is a different way of doing things and the techniques changes.
At this time there is a very good Nuget Package released in CodePlex.
Combres - WebForm & MVC Client-side Resource Combine Library
http://combres.codeplex.com/
http://weblogs.asp.net/gunnarpeipman/archive/2009/07/04/asp-net-mvc-how-to-combine-scripts-and-other-resources.aspx

Resources