Tak nějak. Ono to použití reálné databáze (taky jsme to měli v jednom projektu) vede k tomu, že se vše tváří ok, i když ty dotazy ve skutečnosti můžou být úplně špatně; navíc ty unit testy fakt nemají testovat DB, ale daný kus kódu. Na druhou stranu v integračních testech (nebo možná raději v BDD) to smysl dává a velký.
Jj určitě je to možné a taky jsme to tak řešili. Jen je nutný nezapomínat na striktní setup/teardown pro každý unit test, zajišťovat dostupnost DB z CI atd., hlídat si, až se nehromadí temporary DB (což PostgreSQL do jisté míry umí automaticky per connection) apod. Určitě je to doable a pro e2e a integrační testy asi nic jiného nezbývá.
Ano, prostě mít skutečně unit testy nad unitami (ať to znamená v daném kontextu cokoli - funkce, třídy, ...) a integraci s DB řešit testy integračními.
Chce to ale - aspoň v našem případě - skritně trvat na Definition of Done, protože jinak se na ty testy tým vykašle, když je tlačenej do další práce :-)