Práticas recomendadas de teste de integração
Nossa equipe tem centenas de testes de integração que atingem um banco de dados e verificam resultados. Eu tenho duas classes base para todos os testes de integração, um para testes somente para recuperação e um para testes create / update / delete. A classe base somente para recuperação regenera o banco de dados durante o TestFixtureSetup, portanto, ele só é executado uma vez por classe de teste. A classe base CUD regenera o banco de dados antes de cada teste. Cada classe de repositório possui sua própria classe de teste correspondente.
Como você pode imaginar, essa coisa toda leva algum tempo (aproximando 7-8 minutos para rodar e crescer rapidamente). Ter essa execução como parte de nosso CI (CruiseControl.Net) não é um problema, mas a execução local leva muito tempo e realmente proíbe executá-los antes de confirmar o código.
Minha pergunta é se há alguma prática recomendada para ajudar a acelerar a execução desses tipos de testes de integração?
Não consigo executá-los na memória (a sqlite) porque usamos algumas funcionalidades específicas do banco de dados (colunas calculadas, etc.) que não são suportadas no sqlite.
Além disso, toda a equipe precisa ser capaz de executá-los, portanto, executá-los em uma instância local do SQL Server Express ou algo pode ser propenso a erros, a menos que as cadeias de conexão sejam todas iguais para essas instâncias.
Como você está realizando isso em sua loja e o que funciona bem?
Obrigado!