Idea of how to easily implement this without having to break much things:
Introduce an optional attribute for dependency constructors to "tag" them with a custom identifier
Introduce an optional attribute for dependency parameters (in test functions or dependency constructors) to require the given dependency with a given tag.
Both the above can be implemented by simply using the provided tag as part of the generated dependency accessor function's name
Then introduce an option for the dependency parameters to mark the given dependency to be "tagged by matrix", specifying a dimension name
And allow defining matrix dimensions for a suite
The test macro, when encountering dependencies bound to matrix dimensions should register dynamic test generators instead of static test functions
Ability to define multiple constructors for the same dependency, and automatically generate multiple test suites for using each.