Aider does all of this too, and it has for quite a while. It just tends to ask you for explicit permission when e.g. adding files to the context (potentially token-expensive), creating new files, or running commands (potentially dangerous); AFAIR there's an option (both configuration and cli arg) to auto-approve those requests, though I never tried it.
Aider has extensive code for computing "repository map", with specialized handling for many programming languages; that map is sent to LLM to give it an overview of the project structure and summary of files it might be interested in. It is indeed a very convenient feature.
I never tried writing and launching unit tests via Aider, but from what I remember from the docs, it should work out of the box too.