Простой и читабельный способ в модульном тестировании C #, чтобы показать только различия между объектами, когда утверждение равенства не удается - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть метод, который проверяет модуль, который изменяет состояние объекта макета, который является POCO:

    [TestMethod]
    public void A_Test_Method()
    {
        // Arrange
        const double adjustmentValue = 50;

        var expectedLayout = CreateDefaultLayout();
        ... // set some values

        var actualLayout = CreateDefaultLayout();
        ...

        var runtimeHelper = new LayoutRuntimeHelper(actualLayout);

        // Act

        runtimeHelper.SetPrintVerticalAdjustment(actualLayout.Print.VerticalAdjustment.Orientation, adjustmentValue);

        // Assert

        Assert.AreEqual(expectedLayout, actualLayout);
    }

Примечание: метод ToString () переопределяется, поэтому он печатает весь объект какJSON, а не только его тип.То же самое происходит с Equals ().

Проблема в том, что объекты макета просто большие, поэтому результаты теста также становятся огромными, где я должен найти различия между этими объектами.Итак, как сказать структуре тестирования выводить только различия?

1 Ответ

1 голос
/ 12 апреля 2019

Благодаря комментарию Майка Зборай пакет FluentAssertions Nuget делает его идеальным.Пришлось заменить это:

Assert.AreEqual(expectedLayout, actualLayout);

на это:

actualLayout.Should().BeEquivalentTo(expectedLayout);

Тестовый вывод:

Expected member Image.VerticalPositionAbsoluteMm to be 550.0, but found 650.0.
Expected member Print.VerticalPositionAbsoluteMm to be 550.0, but found 650.0.
Expected member Print.VerticalAdjustment.Orientation to be -1M, but found 1M.

With configuration:
- Use declared types and members
- Compare enums by value
- Match member by name (or throw)
- Without automatic conversion.
- Be strict about the order of items in byte arrays

... (Exception Stacktrace)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...