Estou escrevendo um código de teste para um recurso que processa arquivos PDF. A idéia básica por trás dos testes é que eu os apontei para alguns PDFs selecionados especialmente, eles os processam e eu verifico se a saída é o que eu espero.
Minha pergunta é: onde devo armazenar esses PDFs grandes? Devo verificá-los no controle de versão junto com o código? Ou colocá-los em outro lugar? Obviamente, o código de teste é inútil sem os PDFs (ou mesmo com PDFs diferentes), mas ainda assim, colocá-los em nosso repositório parece errado.
testing
version-control
data
Swiftheart
fonte
fonte
Tests != Test Data
Respostas:
Seu sistema de controle de versão deve conter tudo o que é necessário para criar, compilar, testar e empacotar um aplicativo para distribuição (por exemplo, MSI, RPM). Eu também argumentaria que as configurações de compilação e outros scripts também deveriam estar no controle de versão.
Deveria poder verificar um projeto e ter um ambiente completo de compilação, compilação e teste.
Existem duas abordagens para verificar dados de teste. Primeiro, você pode verificar os próprios dados de teste (neste caso, PDFs). Segundo, você pode verificar os dados de origem que podem ser usados para gerar dados de teste (se aplicável). Pode ser um script SQL carregado em um banco de dados em branco contendo dados de teste ou talvez um arquivo baseado em texto que possa ser compilado em um PDF ou outro arquivo.
Outros podem discordar em verificar tudo no controle de versão, mas, na minha experiência profissional, descobri que é fundamental garantir que um ambiente completo possa ser reconstruído do zero.
fonte
Se os testes são inúteis sem os arquivos de instalação que você preparou, faz sentido incluir os arquivos no seu VCS junto com o código do teste.
Embora os arquivos usados no teste não sejam código, você pode visualizá-los como uma dependência em que o código depende. Portanto, há mérito em manter tudo junto.
Por outro lado, alguns VCSs não lidam bem com arquivos binários grandes e outros têm forte oposição a incluir qualquer tipo de arquivo binário em um VCS. Se um desses casos se aplicar a você, o armazenamento dos arquivos de teste em um local conhecido e de fácil acesso também faria sentido.
Eu também consideraria colocar um comentário no código de teste que diz "depende da
foo.pdf
execução de todos os testes".fonte
Se forem dados estáticos, sim, coloque-os no controle de versão. Na verdade, esses arquivos não são alterados após o check-in; eles serão removidos se essa funcionalidade não for mais necessária ou novos arquivos de teste serão adicionados ao lado. De qualquer forma, você não precisa se preocupar com diferenças binárias ruins ocupando espaço.
Se você estiver gerando dados de teste, por exemplo. aleatoriamente, salve-o automaticamente quando um teste falhar, mas descarte-o de outra forma. Todos os dados salvos dessa maneira devem ser transformados em testes de regressão regulares, para que esses casos extremos sejam definitivamente testados no futuro, em vez de depender da sorte do sorteio.
fonte
Definitivamente, inclua esses dados nos seus testes e no código principal do aplicativo. Ajuda a ter um conjunto de testes muito bem organizado - portanto, se você estiver testando a extração de pdf (e tiver esse código bem encapsulado), poderá criar um caminho para os dados de teste, com base no caminho para o código do aplicativo - isso sempre funcionou para mim.
Com o git, você pode configurar um .gitignore para impedir que qualquer saída temporária ou registro de teste polua seu repositório.
fonte