Одна из возможностей - использовать интерфейс для окна сообщений, например
public interface IMessageBoxProvider
{
MessageBoxResult Show(string messageBoxText, string caption, MessageBoxButton button, MessageBoxImage icon, MessageBoxResult defaultResult);
}
и класс-оболочка, который реализует этот интерфейс и использует обычное или настраиваемое окно сообщения.
В viewmodel вы можете использовать как это
private IMessageBoxProvider MessageBox { get; set; }
где MessageBox - класс-оболочка. Итак, теперь вы отсоединили фактическое окно сообщения и теперь можете проводить модульное тестирование, а что нет.