Thank you for the suggestions!
This may turn out to be a bit long, but I would like to explain the root cause of my original question, because it may make it easier to give me some guidance.
I think of myself as something of an “accidental” software developer, since I followed a fairly typical Eastern European path: as a child in the ’90s I started with BASIC and C64/MOS 6510 assembly, along with a bit of Z80, and later, in secondary school, I learned Turbo Pascal on the PC.
In higher education I studied Java and C, but by that time I already had some independent development tasks, which I implemented in C and C++.
In reality, I have never worked in a typical software development team. I have always been the software-development person in a team working on some kind of industrial control or measurement task. 
As a result, I was mostly spared the currently hyped, supposedly miraculous software development frameworks and methodologies — Scrum, TDD, Agile, and so on. Software has always been just one part of the overall development work, and that is still the case today.
When I need to write PC software, I currently work with C++17, Qt6 and related tools, using the OOP paradigm. I am comfortable in that environment, although I would not call myself a professional software developer.
My problem is mainly with embedded development. In that area, C has become something I would prefer to avoid in many cases, while modern C++ — although there is a lot to be said in its favor — often feels like a kind of forced fit.
I do understand that modern C++ has many advantages over C in embedded environments: zero-cost abstraction, RAII, constexpr, templates, and so on. But, for example, forcing OOP everywhere — especially inheritance — can often come at the expense of code readability.
My search for alternatives began when I started programming STM32 microcontrollers. The spaghetti code that ST produced with STM32Cube — an OOP-like HAL written in plain C — is simply dreadful.
I have tried Rust several times, and although I understand the intentions of the language designers and the advantages of the language, I still have not managed to like it. The hype surrounding the language, as well as the evangelizing tendency often seen among its enthusiasts, did not help either.
Of course, choosing a programming language should be an engineering decision based on objective criteria, which is why I keep giving Rust another try from time to time. But for me, its time has not yet come. 
Ada seems to be the ideal choice for about 80% of my tasks — the remaining 20% being plain C or assembly. Ada code is practically an engineering specification; it almost documents itself. So far, I have found almost everything in Ada that I used in C++, and in the vast majority of cases the Ada way seems more elegant and better from an engineering point of view.
Fortunately, I can use Ada not only in hobby projects. In my work, we have the possibility to implement certain less critical components — tooling, data conversion, and so on — using freely chosen tools.
At the moment, my only real problem is coordinating the development tools and working out a suitable development workflow.
I am not particularly attached to TDD; rather, I would like to understand what the modern “Ada way” is for proper software development.
I’m currently working on a simple audio DSP library, mainly for educational purposes. I want to test the modules of this library, which is where the idea of using AUnit came from.
But I’m actually curious how you professional Ada programmers would do this?
If I’m going to learn a programming language/approach, I want to learn it WELL. (And not with bad habits…)