I don't know if there is a better way to do this within the confines of Boost.Test itself (perhaps making a custom macro, or extending what the macro already does in some way),
but there *is* a better way to get basic values out of unit quantities rather than using .value().
Instead of:
BOOST_CHECK_CLOSE(X(v).value(), 42.0, 0.001);
Try:
BOOST_CHECK_CLOSE(X(v) / meters, 42.0, 0.001);
(You might also need an explicit static_cast<double>. If so, you might want to wrap this whole thing in a helper method to reduce typing.)