Блок c# тестирование преобразователя


У меня есть некоторый код, который преобразует тип X до Z на веб-службу. Х из нашей базы данных и конвертировать Z, используя приведенный ниже код, чтобы отправить в нужный формат заказчика . Я упростил ее, чтобы держать его очень простой.

Итак, позвольте мне дать вам мой модульного тестирования:

OrderReleased orderReleased = new OrderReleased();
orderReleased.MessageId = 1234;
orderReleased.OrderId = "123";

// PS: Convert data from our type to customer's data-type
var orderReleased = Converter.Transform(orderReleased);

Assert.AreEqual(orderReleased.MessageId, orderReleasedReflex.message.msgId);
Assert.AreEqual(orderReleased.OrderId, orderReleasedReflex.message.orderId);

Хотя, есть много полей в этих классах и множество классов для проверки. Есть более elegent образом выполнять эти испытания, чтобы обеспечить данные были скопированы через? И тому, если какие-либо новые поля добавляются, что тест не пройден? Спасибо.



133
-1
задан 5 апреля 2018 в 01:04 Источник Поделиться
Комментарии
1 ответ

Рассмотреть Отражение

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

Не изобретать колесо

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

Используйте var

Используя var для объявления переменных, где назначения делает этот тип очевидно экономит время в будущем, когда вы хотите изменить тип. Вы уже используете ВАР в законе части вашего испытания рисунком, возможно также использование его в организовать раздел тоже.

Комментарии

Комментарий:

// PS: Convert data from our type to customer's data-type

Не особо полезная. Эту информацию можно почерпнуть из кода, и если код изменяет шансы комментария не будет обновляться и в конечном итоге устаревшую, активно вредить понятности.

Я рекомендую стремиться на ваши комментарии, чтобы объяснить , почему ты делаешь что-то (когда это не является очевидным), а не как ты делаешь это, если ваше решение является настолько сложным, чтобы не быть легко поняты мейнтейнер (и в тех случаях упростить код, где это возможно, вместо того, чтобы просто добавляя комментарии).

Использовании объекта для инициализации тестов

Объект initialisers упростить код, так что вместо:

var orderReleased = new OrderReleased();
orderReleased.MessageId = 1234;
orderReleased.OrderId = "123";

Использование:

var orderReleased = new OrderReleased()
{
MessageId = 1234,
OrderId = "123"
}

3
ответ дан 5 апреля 2018 в 01:04 Источник Поделиться