One problem with cargo 3ds test with a custom runner is that 3dsx files won't be built until after the custom runner tries to run the .elf. This requires a separate build + test step for things that need a .3dsx (i.e. anything with romfs).
A possible workaround that occurred to me is configuring our own custom runner that wraps the user-configured one, which would invoke 3dsxtool and all that stuff before then continuing on to the user-configured runner.
Another alternative would be to just run the build command as normal, then run the test/run command that would use the runner. There is probably some overhead this way, but I think Cargo caching should make it mostly not too bad.