You cited three technologies that all intend to do the same: add functionalities to an existing codebase without modifying it.
ASP.NET MVC and DI both put limitations on where you can have aspects (named filters or interceptors) because the technology is only able to add the behaviors at some locations, given they cannot edit your code. Only compiler-based technologies such as PostSharp have the ability to add aspects everywhere. However, all three are implementations of AOP concepts.
Aspects have proven benefits over conventional object-oriented programming in many use cases. It is not true that every single problem can be solved by conventional OOP with better design at the same cost. It is correct, however, that AOP is not mainstream, and that there are costs and risks associated to using a non-mainstream technology (AOP was born in the 90s and OOP in the 60s). As with any innovation, different actors have different sensibility between risks and benefits, so may become early or late adopters.
AOP is not an obstacle to unit testing, but there is little shared experience on the topic. Generally, aspects must be tested as separate units of code. There are essential and non-essential aspects. Typically, business code must be tested together with essential aspects, but non-essential aspects must be disabled. You can disable aspects either statically at build time (just exclude some aspect from the build configuration), or at run time (make the aspect dependent on some static variable that you set to false during testing).