Autofixture: tornar a AutoFixtura estática

Criado em 28 ago. 2013  ·  4Comentários  ·  Fonte: AutoFixture/AutoFixture

[Este é um pedido de melhoria]

Seria legal se pudéssemos escrever

Fixture.Create();

em vez de instanciar uma luminária
var fixture = new Fixture ();
fixture.Create();

Em sua apresentação no NDC de autofixture, você disse que odeia declarar variável no construtor de uma classe de teste para usá-la em todos os métodos de teste. Você disse que é mais claro ver tudo dentro de um método. Segui sua ideia porque acho que é uma boa ideia, mas o problema é que atualmente estou instanciando uma nova luminária em cada método e não sou muito fã, prefiro chamar Fixture.Create();

O que você acha ?

Sim, eu sei, eu poderia usar a forma declarativa, mas não sou um grande fã, pois terei que criar uma nova classe que implemente ICustomize. Portanto, não verei tudo dentro de um método de teste. Terei que navegar até a classe para ver como os dados estão configurados. E mais, a maioria dos meus métodos tem uma maneira diferente de configurar os dados, então não quero criar uma classe que implemente ICustomize para cada um dos meus métodos de teste.

Todos 4 comentários

Além de salvar 6 pressionamentos de tecla, como

`` `c #
var foo = Fixture.Create();

provide any advantage that

``` c#
var foo = new Fixture().Create<Foo>();

não faz?

O problema sobre pressionamentos de tecla extras pode ser resolvido criando um trecho de código do Visual Studio.

Obrigado pela sua resposta, Mark, Certamente, o snippet de código me permitirá digitar mais rápido, mas para facilitar a leitura, prefiro ler;

Fixture.Create();
Fixture.Build();

que

novo acessório (). Criar();
novo acessório (). Construir();

É um pequeno aprimoramento, mas faria meu coração bater ainda mais forte ao usar a autofixação.

É justo. No entanto, a legibilidade é uma coisa subjetiva.

Em minha experiência, na maioria das bases de código, as pessoas precisam personalizar uma instância do Fixture de uma forma ou de outra, a fim de acomodar todas as pequenas peculiaridades de sua base de código ou das bibliotecas de utilitários que usam. Como exemplo, você não pode usar uma instância de Fixture simples para testar os controladores ASP.NET MVC, porque (IIRC) há certas partes dessas classes básicas que têm referências circulares.

Portanto, presumindo que um método Fixture.Create<T>() hipotético funcionaria em uma instância de Fixture simples, considero-o de utilidade limitada.

Esta não é uma direção na qual eu gostaria de fazer o AutoFixture, então fecharei esta sugestão.

No entanto, nada impede que você mesmo crie esse invólucro; seria bastante trivial de implementar.

Também gosto da ideia de manter o novo Fixture (), mas também tenho um atalho estático adicional (para uma instância estática privada) na própria biblioteca. É trivial escrever um wrapper ou um método de extensão, mas um pouco problemático para gerenciar (por exemplo, namespace) e transportar de projetos para projetos.
Obrigado,

Esta página foi útil?
0 / 5 - 0 avaliações