Управление Namer в WpfApprovals в ApprovalTests

Я столкнулся с проблемой использования WpfApprovals на разных версиях ОС. Мой личный ноутбук работает под управлением Windows 7 Enterprise, а сервер сборки работает под управлением Windows 7 professional. Поскольку WpfApprovals использует имя ОС в имени файла утверждения, тесты на сервере сборки не выполняются.

Я попробовал несколько вариантов, чтобы избежать включения ОС в имя утверждения, однако похоже, что это поведение жестко запрограммировано в WpfApprovals.cs...

    public static void Verify(Control control)
    {
        ApprovalResults.UniqueForOs();
        ApprovalTests.Approvals.Verify(new ImageWriter(f => WpfUtils.ScreenCapture(control, f)));
    }

... если не считать измененной версии библиотеки, которая комментирует вызов ApprovalResults.UniqueForOs(), есть ли способ отключить включение информации об ОС в имя файла утверждения?

Хотя я могу оценить, что эти тесты не пройдут в разных основных версиях ОС, они не должны проходить в разных редакциях. Я заметил, что стандартный верификатор строк не требует именования в стиле UniqueForOs.

1 ответ

Хорошая точка зрения.

Этот Wpf немного сложен, потому что непротиворечивость всегда является проблемой, но форсировать ее, возможно, не лучшая идея, особенно без возможности переопределить поведение по умолчанию. Пока мы выясняем правильное решение для следующей версии, вот пара обходных путей для 3.0.5

1) Копировать файл
Вы можете просто скопировать утвержденный файл, чтобы соответствовать обеим версиям ОС. Это немного отстой, но не требует кодирования.

2) Индивидуальный вызов Wpf
Хотя вы заявили, что не делаете этого, это довольно легко исправить

public static void Verify(Control control)
{
    ApprovalTests.Approvals.Verify(new ImageWriter(f => WpfUtils.ScreenCapture(control, f)));
}

К сожалению это все. Нет способа перехватить имя.

Спасибо за доведение этого до нашего сведения!

Другие вопросы по тегам