Rodando NUnit nativamente no Visual Studio Dev11

Tempo de leitura:2 minuto(s)

A essa altura todo mundo já sabe que a Microsoft abraçou a ideia de rodar outros frameworks de testes diretamente de dentro do Visual Studio. Isso se concretizou com o Visual Studio vNext, ainda sem nome mas chamado de Dev11.
Ao criar um projeto de testes no Dev11, o que vem por padrão é o MSTest, framework da Microsoft. Para rodar o popular NUnit, você tem que seguir poucos passos:

Acrescentar o NUnit test adapter no Visual Studio via Extension Gallery:

Extension Manager

Instalar o NUnit via Nuget:

Nuget com NUnit

Opcionalmente remover a referência ao Assembly do MSTest, Microsoft.VisualStudio.QualityTools.UnitTestFramework.

Substituir os atributos do MSTest pelos do NUnit (de TestClass para TestFixture e de TestMethod para Test). Um find and replace all resolve isso rápido. Os asserts devem continuar funcionando, já que a maioria é igual nos dois frameworks, com pequenas diferenças. A classe padrão fica assim:

using NUnit.Framework;
namespace UnitTestProject1
{
    [TestFixture]
    public class UnitTest1
    {
        [Test]
        public void TestMethod1()
        {
        }
    }
}

 

Um teste simples de soma, seria assim:

[Test]
public void Soma()
{
    Assert.AreEqual(3, 2 + 1);
}

 

E rodar pelas vias normais (atalho de teclado, menu ou botão). O resultado aparece diretamente dentro do Visual Studio:

Unit Test Explorer com testes do NUnit

Outra coisa interessante é que essa nova janela, Unit Test Explorer, é não invasiva. Depois de rodar os testes ela aparece, mostra os resultados, e logo volta pra posição em colapso, não obstruindo seu trabalho. Os testes parecem estar rodando mais rápido também.

Tudo muito bom. É uma grande evolução com relação a versão anterior, por diversos motivos.

Autor: Giovanni Bassi

Arquiteto e desenvolvedor, agilista, escalador, provocador.
Programa porque gosta, e começou a trabalhar com isso porque acha que trabalhar como administrador é meio chato. Por esse motivo sempre diz que nunca mais vai virar gerente de ninguém. E também porque acredita que pessoas autogerenciadas funcionam melhor e por acreditar que heterarquia é melhor que hierarquia. Mas isso é outro assunto.
Foi reconhecido  Microsoft MVP depois que alguém notou que ele não dormia a noite pra ficar escrevendo artigos, cuidando e participando do .Net Architects, gravando o podcast Tecnoretórica, escrevendo posts no blog e falando o que bem entende no twitter @giovannibassi. E por falar nisso é no twitter que conta pra todos que gerencia de projetos deve ser feita pelo time e não por um gerentes, que greves em TI são coisas sem sentido e que stored procedure com regras de negócio são malígnas.
Você já deve ter percebido (até porque está lá na primeira frase) que Giovanni é agilista. De tanto gostar disso ele trouxe os programas de certificação e treinamento  PSD e PSM da Scrum.org pro Brasil, e por causa deles, do MVP e de algum trabalho que aparece tem que ficar indo pros EUA de vez enquando, coisa que prefere não fazer. (É bem comum você ouvir ele perguntando porque a Scrum.org e a Microsoft não estão na Itália, por exemplo.)
Junto com alguns Jedis criou a Lambda3, que, apesar de ser pequena e de não ser muito comum no Brasil, insiste em fazer projetos e consultoria direito. Por causa da Lambda3 ele tem trabalhado mais do que quando era consultor independente, mas menos do que a maioria das pessoas. Quer dizer, isso se você considerar que os trabalhos junto à comunidade não são trabalho, caso contrário ele trabalha mais que a maioria das pessoas.
Recentemente ele resolveu que merecia viver melhor e ganhar uns anos de vida e desistiu de ser sedentário, fazendo algum barulho de vez em quando com os amigos no twitter com a hashtag #DotNetEmForma. Por causa do convite recente de amigos do lado Open Source (que ele respeita e admira), começou a escalar, e agora está sempre com as mãos machucadas. Mas ainda dá pra programar. Você encontra ele sempre em algum evento, como o TechEd, e o DNAD, mas também outros menos comuns para o pessoal do .NET, como a RubyConf. Nesses eventos, ou ele está vendo palestras, ou batendo papo com alguém, ou codando alguma aplicação que alguém achou que dava pra fazer durante o evento.

  • Sem querer trollar, mas pq demora 24ms para somar dois números?

    • Porque é um único teste. Se rodassem muitos o tempo ficaria menor.