TDD e ADO.NET Entity Framework

votos
17

Estive jogando com ADO.NET Entity Framework ultimamente, e eu acho que ele se adapte às minhas necessidades para um projeto que estou desenvolvendo. Eu também acho arrefecer sua natureza não-invasivo.

Depois de gerar um modelo de dados a partir de um banco de dados existente você se depara com a tarefa de integrar o modelo gerado e sua lógica de negócio. Mais especificamente, eu estou acostumado a integração em testar minhas classes que interagem com o armazenamento de dados via zomba / stubs das interfaces DAL. O problema é que você não pode fazer isso usando o ADO.NET Entity Framework, porque as entidades que ele gera são classes simples sem interface.

A pergunta é: como faço para aplicar uma abordagem TDD para o desenvolvimento de um aplicativo que usa ADO.NET Entity Framework? É isto mesmo possível ou devo migrar para outro conjunto de ferramentas DAL-geração?

Publicado 25/11/2008 em 11:14
fonte usuário
Em outras línguas...                            


6 respostas

votos
2

"O acoplamento forte da infra-estrutura de persistência para as classes de entidade elimina em grande parte a capacidade de usar eficientemente ciclos de feedback muito apertados na lógica de negócio com testes automatizados. Em seu estado atual, classes de entidade EF não pode ser efetivamente unidade testada de forma independente do banco de dados.

A eficiência de testes de unidade automatizada de objetos de comportamento é em grande parte uma questão de quão fácil a mecânica da configuração de dados de teste são e como rapidamente os testes podem ser executados. Usando o banco de dados real fará a configuração de dados de teste mais trabalhoso, introduzir dados para satisfazer as restrições relacionais que não são pertinentes para o teste, e fazer a execução do teste de uma ordem de magnitude mais lenta.

A capacidade de uma equipe para fazer design evolucionário e entrega incremental é danificado por falta de atenção do Entity Framework para princípios de design de software fundamentais como a separação de interesses ".

Descaradamente roubado aqui: http://efvote.wufoo.com/forms/ado-net-entity-framework-vote-of-no-confidence/

Respondeu 25/11/2008 em 11:38
fonte usuário

votos
14

Uma das grandes críticas contra o Entity Framework tem sido de que é inerentemente difícil de testar, por exemplo, no ALT.Net voto de confiança que GEF citado.

Aqui está um post discutindo como contornar esta situação, e ser capaz de testar seu código sem bater o banco de dados, quando usando o Entity Framework.

Se a capacidade de teste é uma grande preocupação, você pode querer olhar para outro quadro ORM, como NHibernate, pelo menos até Entity Framework 2.0 é liberado.

Respondeu 25/11/2008 em 11:49
fonte usuário

votos
2

Se você está procurando especificamente para ferramentas DAL-geração você terá um tempo difícil integrar isso com TDD. A maioria das ferramentas de geração de dal Sei também gerar seus objetos de negócios e fortemente par-los para a tomada de DAL teste difícil.

Você pode olhar para ferramentas ou de mapeamento como nHibernate e talvez LINQ to SQL que permitem "ignorância persistência", você pode definir seu negócio objetos si mesmo e eles não têm ligações à DAL ou qualquer outro código de infra-estrutura. Isso faz com que testar sua lógica de negócio separadamente a partir de seu banco de dados muito mais fácil. Achei também permite outro cenário de como os clientes conectados ocasionalmente muito melhores.

Respondeu 25/11/2008 em 11:55
fonte usuário

votos
3

Concordo que a versão 1 do Entity Framework é um crime contra a concepção e definitivamente tem o meu voto de não confiança. Eu credito a equipe de produto EF embora para reconhecer a falha e responder abrindo seu processo de design para a comunidade. O próximo lançamento não vai ser perfeito, ele pode até não estar pronto para uso em um aplicativo de nível de produção, mas eu acho que eles estão finalmente começando a entender o que é importante para aqueles de uso que sabem que mau design é mau negócio. Dito isto ... Eu ainda sou suspeito. Contínuo feedback em tempo de design é novo para esses caras e eu li algumas declarações sobre o blog ADO.NET que levantar brilhantes, bandeiras vermelhas. Vamos ver como ele vai com o lançamento do .NET 4.0.

Eles parecem estar a tentar embora:

Test-Driven Development Passo a passo com o Entity Framework 4.0

Respondeu 26/01/2010 em 05:22
fonte usuário

votos
10

Embora, a pergunta original foi respondida, eu sinto que eu poderia acrescentar algo:

Atualmente, estou usando o Entity Framework 4.0 em um site de intranet que estou construindo. Eu sou capaz de testar tudo na minha lógica de negócios e controladores sem uma conexão de banco de dados usando o apoio POCO que tenha sido adicionado.

Embora, do POCO pode ser gerado a partir do novo modelo de t4 incluído no VS 2010, algo que eu não tenho sido capaz de encontrar em VS 2010 é um modelo de t4 para gerar o contexto do objeto (o contexto de objeto funciona basicamente como um construído em unidade de trabalho para EF e é essencial para mapear seus objetos EF para Poços). Felizmente Joachim Lykke Andersen em seu blog Entity Framework 4.0 Beta 1 - POCO, ObjectSet, Repositório e UnitOfWork escreveu um modelo de t4 para gerá-la e tem sido muito útil. Se você procurar uma solução usando o EF4 que é testável sem uma conexão de banco de dados Eu recomendo implementar algo semelhante ao seu solução que inclui um repositório genérico, a unidade de embalagem de trabalho, e uma unidade de fábrica de trabalho. Tem sido muito útil.

Melhor da sorte.

Respondeu 01/03/2010 em 03:03
fonte usuário

votos
0

Essa resposta foi alterado para "Sim, você pode".

Você pode gerar POCO e as interfaces usando modelos T4 personalizados tais como https://entityinterfacegenerator.codeplex.com/ , em seguida, criar zombando objetos para testar EF dentro e fora sem bater o banco de dados.

Respondeu 12/05/2014 em 00:08
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more