The option separate_kwargs_with_semicolon has no effect when inside macro calls. I can see why, keyword arguments are handled differently for macros, and semicolon typically is not used to separate them.
However, in case of @testset (and possibly other macros with block arguments), the code between begin and end is normal Julia code, with regular function calls. Disabling semicolon enforcement within this block as well doesn't make sense.
I think it would be better to re-enable can_separate_args in the context when we enter such a begin...end block.