При написании юнит-тестов каждый юнит должен тестировать только одну вещь. Таким образом, ваш expectException
должен быть как можно более точным c, как вы указали в своем коде, ища конкретное исключение и конкретное сообщение.
Если ваш конструктор выдал такое же исключение, тогда вариант B будет лучшим вариантом, поэтому вы не поймаете исключение конструктора случайно. Если конструктор выбрасывает исключения, вы должны были бы написать другие тестовые случаи, которые выводят конструктор из потока sh.
Если конструктор не выдает никаких исключений, два модульных теста совпадают с выполнением.
Если вы спрашивали с точки зрения читабельности, тогда вариант B более читабелен, поскольку очевидно, что ожидается, что ваш метод Bar
вызовет исключение.