Salut!
dès qu'on utilise TC, on est confronté à ce problème...
Il y a 2 ans, quand on a commencé (pour remplacer les tests utilisant
H2, qui est 'compatible' jusqu'à un certain point... lointant!), les
premiers tests lançaient unitairement TC. On avait qq chose comme 200
tests, donc on a vite compris que c'était une erreur (200 x 10s -> 40 mins).
Donc on a décidé de faire des rollbacks, mais comme tu le dis, ça pose
d'autres problèmes. Pour nous, ça faisait largement l'affaire.
Mais il y a aussi une autre possibilité, si la base n'est pas trop
grosse: faire un Snapshot (pg_dump/pg_restore). On ne l'a pas mis en
oeuvre, parce que la methode basée sur des rollbacks étaient suffisante,
mais ça rest eune option.
La suggestion de Arnaud qui consiste à créer une database par test est
également possible, mais il faut la populer avant chaque test. Si la
taille des données à injecter est petire, je pense que le snapshot est
suffisant.
Juste pour info, dans le monde LDAP, on a travaillé longtemps sur ce
sujet sur Apache Directory: comment lancer des tests qui ne prennent pas
des heures (lancement de la base avant chaque test à proscrire pour la
même raison), et du coup on a intégré un mécanisme de journalisation: on
pose un point d'arrêt, on enregistre toutes les opérations ainsi que les
opérations inverses (si on ADD, alors on crée le DELETE inverse) et on
peut retourner dessus (techniquement, on 'joue' les opérations à
l'envers). Je pense qu'il doit y avoir l'équivalent dans Posgresl
(
https://www.postgresql.org/docs/current/app-pgrewind.html), mais je
n'ai pas vérifié.
>
https://lescastcodeurs.com/2024/09/16/lcc-315-les-temperatures-ne-sont-pas-deterministes/ <
https://lescastcodeurs.com/2024/09/16/lcc-315-les-temperatures-ne-sont-pas-deterministes/>
>
> Emmanuel
>
> --
> Vous recevez ce message, car vous êtes abonné au groupe Google Groupes
> "lescastcodeurs".
> Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le
> concernant, envoyez un e-mail à l'adresse
>
lescastcodeur...@googlegroups.com
> <mailto:
lescastcodeur...@googlegroups.com>.
> Cette discussion peut être lue sur le Web à l'adresse
>
https://groups.google.com/d/msgid/lescastcodeurs/90af3de7-056d-4827-a657-02fa6f9cc231n%40googlegroups.com <
https://groups.google.com/d/msgid/lescastcodeurs/90af3de7-056d-4827-a657-02fa6f9cc231n%40googlegroups.com?utm_medium=email&utm_source=footer>.
--
*Emmanuel Lécharny* P.
+33 (0)6 08 33 32 61
elec...@apache.org