Pergunta

Estamos desenvolvendo em C ++ em Linux e sobre a criação de testes automatizados. Temos a intenção de usar um framework de testes como CppUnit oder CxxTest. Estamos usando Ant para construir o software e também vamos usá-lo para executar os testes.

Como alguns testes vão envolver o acesso de banco de dados, estamos à procura de uma ferramenta ou framework que facilita as tarefas de preparação e limpeza de dados de teste na base de dados - assim como DbUnit (a extensão JUnit) no mundo Java <. / p>

Outra opção pode ser a empregar o DbUnit real - um Java VM está disponível. Fazendo uso de tarefa Ant de DbUnit parece ser mais promissor. Quaisquer relatórios de campo relacionados são bem-vindos!

Foi útil?

Solução 3

Como não parece haver nenhuma DbUnit-como ferramenta para o desenvolvimento C ++, nós construímos uma pequena estrutura de nossa própria. Basicamente, é um adaptador para chamar operações DbUnit reais de dentro testrunners C / C ++. Ele faz uso do Ant tarefas fornecido pelo DbUnit.

Nós definimos algumas macros como TS_DB_INSERT(filename) que system("ant -Ddb.dataset=filename db.insert") chamada e assim por diante.

Neste caso, db.insert é um alvo Ant que executa uma tarefa DbUnit realizando uma operação INSERT no banco de dados. As referências filename um conjunto de dados XML que contém os dados para inserir. Há também uma macro afirmação que envolve um compare DbUnit.

O caso de teste pode ter esta aparência:

void testDatabaseStuff
{
    TS_DB_INSERT("input.xml");

    TestedClass::doSomething();

    TS_DB_ASSERT("expected.xml");
}

Outras dicas

Eu recomendaria impulso unidade testando . Você provavelmente teria que usar a instalação e desmontagem para manualmente limpar o banco de dados. Claro, você pode construir seu próprio ++ DbUnit C em ODBC. Se você fizer isso, deixe-me saber porque eu poderia usar isso como bem!

Eu suponho que você tem seu próprio API C ++ para trabalhar com DB. Se é verdade, é melhor você fazer toda a preparação a sua DB por conta própria. Nesse caso, você irá testar a sua API DB também.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top