Oi, o problema é o seguinte, tenho um dataset com duas colunas de tabelas diferente onde cada uma tem um id que auto incrementa. Assim quando faço os testes de inserção comparando as tabelas sempre falha pois sempre é um novo id pelo fato se sempre incrementar. O que posso fazer para que esses dados que são adicionados na nova tabela sempre tenham id 4?
O ideal é que para cada teste que você executar suas tabelas estejam zeradas, uma forma seria truncar as tabelas ou usar um banco de dados em memória, o SQLite possibilita que você configure o mesmo para salvar os dados em memória e para cada teste as tabelas vão estar zeradas.
Como faço isso? pode dar mais detalhes? sou iniciante
Você está usando JDBC?
sim
No junit existe um anotations chamada @before que é adicionada em um metodo que irá executar antes de todos os seus testes, neste método você irá realizar o truncate das tabelas para que os ids sejam zerados.
certo! e como realizo esse truncate?
try (Connection connection = getConnection();
Statement statement = connection.createStatement()) {
int result = statement.executeUpdate("TRUNCATE " + tableName);
connection.commit();
return result;
}
Como tem retorno, eu teria que criar um método dentro do before com esse codigo? eu teria que chamar esse método onde?
Cara esse retorno é pra informar se a execução foi concluída ou não. Não é necessário que você retorne esse resultado só se você quiser efetuar alguma validação após apagar os dados da tabela.
Entendi! Obrigado! Mas eu tentei pondo esse método no before e não deu certo…
Dá erro falando que não pode usar truncate numa tabela que tem foreign key! ai ele sugere adiciona TRUNCATE CASCATE table_name, eu fiz isso e também dá erro
Provavelmente você vai ter que fazer o truncate nas tabelas que estão relacionadas com a sua tabela para funcionar.
Deu certo agora, mas parece que ele apaga todos os dados da tabela… vários testes não estão passando
sim, ele apaga todos os dados, para você realizar o teste o ideal e que todos os dados sejam apagados mesmo.
Ah entendi, então obrigado, preciso descobrir outro jeito porque tem testes que dependem da tabela inicial estar preenchida!
Cara da uma pesquisada por TDD, teste unitário e testes de integração.
Acho que você está fazendo os teste de forma errada.
vou deixar uma indicação de um livro tambem: https://www.casadocodigo.com.br/products/livro-tdd
Obrigado!
Testei muito com o truncate e ele não resetava a Id… continuava incrementando!!
statement.execute(“alter sequence " + “topico_id_topico_seq” + " RESTART WITH 4”);
essa solução acima foi a que encontrei pesquisando e funcionou! Obrigado pela sua ajuda, sem as dicas que vc deu eu não teria chegado nesse resultado!!!