You need to decide whether passing an empty string to that function is undefined behaviour or whether it's contract guarantees that it throws an exception if passed an empty string.
It sounds like your intent is for it to be undefined behaviour, i.e. the contract says nothing about what will happen if an empty string is passed. In that case, the easiest way to test the validation of your contract is to build your unit tests for negative testing as a special build with REQUIRE
modified to throw some 'precondition violated' exception, which you would then test for with ASSERT_THROW
I highly recommend watching John Lakos' talk on Defensive Programming from ACCU 2011, it covers exactly this problem