Pergunta

Há um monte de UnitTesting quadros lá fora para .NET. Eu encontrei esta comparação característica pouco: http://xunit.github.io/docs/comparisons.html

Agora estou a escolher o melhor para nós. Mas como? Isso importa? Qual deles é mais à prova de futuro e tem um impulso decente por trás disso? Eu deveria me importar sobre os recursos? Enquanto xUnit parece ser mais moderno e projetado especificamente para .NET, NUnit novamente parece ser o único que é amplamente aceito. MSTest novamente já está integrado no Visual Studio ...

Foi útil?

Solução

Eu sei que esta é uma discussão antiga, mas eu pensei que eu ia postar um voto para xUnit.NET . Enquanto a maioria dos outros frameworks de testes mencionados são todos praticamente o mesmo, xUnit.NET tem tido uma abordagem bastante original, moderno e flexível para testes de unidade. Ela muda a terminologia, para que você não definir TestFixtures e testes ... você especificar fatos e teorias sobre o seu código, que integra melhor com o conceito do que um teste é de uma perspectiva TDD / BDD.

xUnit.NET também é extremamente extensível. Suas classes de atributos FactAttribute e TraitAttribute não estão fechados, e fornecer métodos base substituível que lhe dão um monte de controle sobre como os métodos esses atributos decorar deve ser executado. Enquanto xUnit.NET em sua forma padrão permite escrever classes de teste que são semelhantes aos dispositivos de teste NUnit com seus métodos de ensaio, você não se limitam a esta forma de teste de unidade em tudo. Você é livre para estender o quadro de apoio especificações BDD-style Preocupação / Context / observação, como descrito aqui .

xUnit.net também suporta encaixar-style testar diretamente fora da caixa com seu atributo Teoria e atributos de dados correspondente. dados de entrada ajuste pode ser carregado a partir do Excel, base de dados, ou mesmo uma fonte de dados personalizada, tal como um documento do Word (por que se estende o atributo de dados de base.) Isto permite-lhe capitalizar numa plataforma de ensaio único em ambos os testes unitários e testes de integração, que pode ser enorme na redução da dependência de produtos e treinamento necessário.

Outras abordagens para teste também pode ser implementado com xUnit.NET ... as possibilidades são bastante ilimitadas. Combinado com outro quadro zombando muito prospectiva, Moq , os dois criar um muito flexível, extensível e poderoso plataforma para a implementação de testes automatizados.

Outras dicas

NUnit é provavelmente o mais suportado pela 3ª ferramentas de parte. Ele também tem sido em torno de mais do que os outros três.

Eu pessoalmente não me importo muito com estruturas de teste de unidade, zombando bibliotecas são IMHO muito mais importante (e trancá-lo em muito mais). Basta escolher um e ficar com ela.

Eu não iria com MSTest. Embora seja provavelmente o mais à prova do futuro dos quadros com Microsoft por trás não é a solução mais flexível. Ele não será executado ficar sozinho sem alguns hacks. Então, executando-o em um servidor de compilação diferente do TFS sem instalar Visual Studio é difícil. O estúdio test-corredor visual é realmente mais lento do que Testdriven.Net + qualquer um dos outros frameworks. E porque os lançamentos deste quadro são vinculados a versões do Visual Studio há menos atualizações e se você tem que trabalhar com um VS mais velho você está amarrado a um MSTest mais velho.

Eu não acho que isso importa muito qual das outras estruturas que você usa. É muito fácil mudar de um para outro.

Eu pessoalmente uso XUnit.Net ou NUnit dependendo da preferência dos meus colegas de trabalho. NUnit é o mais padrão. XUnit.Net é a estrutura mais magra.

Considere completando, não substituindo, MSTest com outro framework de testes. Você pode manter a integração Visual Studio MSTest ao obter os benefícios de uma estrutura de teste mais completo.

Por exemplo, eu uso xUnit com MSTest. Adicione uma referência para o xUnit.dll montagem, e apenas fazer algo assim. Surpreendentemente, ele simplesmente funciona!

using Microsoft.VisualStudio.TestTools.UnitTesting;
using Assert = Xunit.Assert;  // <-- Aliasing the Xunit namespace is key

namespace TestSample
{
    [TestClass]
    public class XunitTestIntegrationSample
    {
        [TestMethod]
        public void TrueTest()
        {
            Assert.True(true);  // <-- this is the Xunit.Assert class
        }

        [TestMethod]
        public void FalseTest()
        {
            Assert.False(true);
        }
    }
}

Não é um grande negócio em uma escala pequena / pessoal, mas pode se tornar um grande negócio rapidamente em uma escala maior. Meu empregador é uma grande loja de Microsoft, mas não vai / não pode comprar no Team System / TFS para uma série de razões. Atualmente usamos Subversion + Orcas + MBUnit + TestDriven.NET e ele funciona bem, mas recebendo TD.NET foi um enorme aborrecimento. A sensibilidade versão do MBUnit + TestDriven.NET é também uma grande confusão, e ter uma coisa comercial adicional (TD.NET) para legal para avaliação e aquisição de manusear e gerenciar, não é trivial. Minha empresa, como um monte de empresas, é gordo e feliz com um modelo de Assinatura MSDN, e ele simplesmente não está acostumado a lidar com um fora de aquisições por centenas de desenvolvedores. Em outras palavras, as MS totalmente integrados oferecem, enquanto definitivamente não é sempre best-of-pão, é um valor agregado significativo na minha opinião.

Eu acho que nós vamos ficar com a nossa etapa atual porque ele funciona e já tenha obtido sobre a corcunda organizacionalmente, mas tenho certeza que MS desejo tinha uma oferta convincente neste espaço para que pudéssemos consolidar e simplificar a nossa pilha dev um bit.

Nunit não funciona bem com projetos de modo misto em C ++ então eu tive que soltá-lo

Não é um grande negócio, é muito fácil alternar entre eles. MSTest sendo integrado não é um grande negócio, quer, apenas testdriven.net agarrar.

Como a pessoa anterior disse pegar um quadro zombando, o meu favorito no momento é Moq.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top