O Desenvolvimento Orientado a Testes implica escrever o teste antes do código e seguir um certo ciclo :
- Teste de gravação
- Verificar teste (execução)
- Escrever código de produção
- Verificar teste (execução)
- Limpar código de produção
- Teste de verificação (execução)
Para mim, isso só é possível se sua solução de desenvolvimento permitir alternar muito rapidamente entre o código de produção e teste e executar o teste para uma determinada parte do código de produção com extrema rapidez.
Agora, enquanto existem muitas estruturas de teste de unidade para C ++ (estou usando o atm Bost.Test), parece que realmente não existe nenhuma solução decente (para C ++ nativa ) do Visual Studio (Plugin) que faça o TDD ciclo suportável, independentemente da estrutura usada.
"Suportável" significa que é uma ação de um clique executar um teste para um determinado arquivo cpp sem ter que configurar manualmente um projeto de teste separado etc. "Suportável" também significa que um teste simples é iniciado (vinculado!) E executado muito rapidamente .
Então, quais ferramentas (plug-ins) e técnicas existem para tornar o ciclo TDD possível para o desenvolvimento nativo de C ++ com o Visual Studio?
Nota: Eu estou bem com ferramentas gratuitas ou "comerciais".
Por favor : Não há recomendações de estrutura. (A menos que a estrutura tenha um plug-in Visual Studio dedicado e você queira recomendar o plug-in.)
Nota de edição : As respostas até o momento forneceram links sobre como integrar uma estrutura de Teste de Unidade ao Visual Studio. Os recursos descrevem mais ou menos como obter a estrutura do UT para compilar e executar seus primeiros testes. Isso é não o que esta pergunta é sobre. Sou da opinião de que, para realmente trabalhar produtivamente, tendo os Testes de Unidade em uma manutenção manual (!), Separar vcproj de suas classes de produção adicionará tanta sobrecarga que o TDD "não é possível". Tanto quanto sei, você não adiciona "projetos" extras a uma coisa Java ou C # para habilitar testes de unidade e TDD, e por um bom motivo. Isso deveria possível com o C ++, dadas as ferramentas corretas, mas parece (essa pergunta é sobre) que existem muito poucas ferramentas para TDD / C ++ / VS.
Pesquisando, encontrei uma ferramenta, o VisualAssert , que parece apontar na direção certa. No entanto, em geral, não parece ser amplamente utilizado (comparado ao CppUnit, Boost.Test etc.).
Editar: eu gostaria de adicionar um comentário ao contexto desta pergunta. Eu acho que ele faz um bom resumo do esboço (parte) do problema: (comentário por Billy ONeal )
O Visual Studio não usa "scripts de criação" razoavelmente editáveis pelo usuário. Um projeto produz um binário. Além disso, o Java tem a propriedade de que o Java nunca constrói um binário completo - o binário que você constrói é apenas um ZIP dos arquivos de classe. Portanto, é possível compilar separadamente e JAR juntos manualmente (usando, por exemplo, 7z). C ++ e C #, na verdade, vinculam seus binários, de modo geral, você não pode escrever um script como esse. O mais próximo que você pode chegar é compilar tudo separadamente e, em seguida, fazer dois vínculos (um para produção e outro para teste).
7z
). C ++ e C #, na verdade, vinculam seus binários, de modo geral, você não pode escrever um script como esse. O mais próximo que você pode chegar é compilar tudo separadamente e, em seguida, fazer dois vínculos (um para produção e outro para teste).
As far as I am aware, you do not add extra "projects" to a Java or C# thing to enable Unit Tests and TDD,
<- Não acho que isso esteja correto. Você também costuma ter vários projetos em C #; você não deseja enviar seu código de teste no seu binário de produção.