2010-02-11 2 views
9

Я просто сделал создание веб-службы, которая будет использоваться нестандартной внутренней системой .NET. Я бы хотел, чтобы некоторые советы по наилучшему способу установки тестовых классов и методов над .asmx (лучшие практики, как протестировать вызовы, что не делать и т. Д.), В частности, в среде .NET 3.5.Рекомендации по тестированию устройств - как выполнить модульный тест .asmx

Я буду использовать NUnit для проведения этого тестирования. Это так же просто, как создание тестового проекта, добавление сервиса к нему, а затем создание тестового класса и экземпляра этой службы. Затем начать создавать свои тестовые методы?

Мне нужно проверить методы .asmx и .asmx.cs (unit test the methods), чтобы я знал, передаю ли я этому товарищу по команде, что он будет работать.

Возможно, это невозможно проверить непосредственно .asmx.cs, и мне просто нужно будет протестировать с помощью тестов интеграции. Я предполагаю, что мне действительно нужно, чтобы издеваться над моим .asmx. Наверное, невозможно.

ответ

8

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

Если вы хотите протестировать сам файл asmx, вы говорите об интеграционном тесте. Вы можете использовать NUnit для этого, как вы описали, но это не модульное тестирование.

+0

Я хочу, чтобы UNIT тестировал методы в. asmx.cs. Поэтому мой вопрос еще предстоит решить, потому что в моем модульном тестовом проекте, я думаю, я не уверен, как звонить на .asmx.cs. Другими словами, если мой сервис называется MyService.asmx, я хочу создать модульный тест MyServiceTest, который специально проверяет методы .asmx.cs. Мне нужно, чтобы оба проверяли, как если бы я являлся потребителем служебного и модульного тестов одновременно, чтобы узнать, не получаю ли я ошибок внутри любых методов .asmx.cs. В принципе, я создал внутреннюю службу, и мой босс собирается ее использовать. Просто сделали с методами. – PositiveGuy

+0

Так что, я думаю, мои вопросы все еще стоят. Я создал решение MyTestProject и в нем проект C#, который будет содержать мои тестовые классы. Затем добавили веб-проект в одно и то же решение и хотите проверить вызовы на .asmx, а также выполнить тестирование методов в .asmx.cs. – PositiveGuy

+0

Можете ли вы перенести методы из asmx.cs (по крайней мере, части, которые должны быть тестировали) в новый класс и тестировали это? – Davy8

0

Как указано в Lodewijk, лучше всего не тестировать файл asmx. Вместо этого извлеките логику из этого файла в файлы классов, которые обрабатывают поведение, которое вы выполняете. Таким образом, вы можете затем тестировать эти классы отдельно от пользовательского интерфейса. Вы можете обнаружить, что реальная проблема заключается в том, что в вашем пользовательском интерфейсе слишком много бизнес-логики.

Если вы хотите протестировать сам файл asmx, вы либо захотите рассмотреть ручное тестирование, интеграционное тестирование или приемочное тестирование ... но если вы сможете переместить свою логику на бизнес-уровень, вы, вероятно, найдете его много легче протестировать.

+0

У меня уже есть проект BL для этого. В любом случае, спасибо. Это обертки вокруг вызовов BL. – PositiveGuy

1

К сожалению, это проблема с веб-службами .asmx, они зависят от ASP.net, вы лучше всего будете поддерживать веб-службу .asmx как заглушку и извлекать логику веб-сервиса в чистую зависимость -бесплатный класс и единичный тест. Другая альтернатива - запустить тесты интеграции.

В конечном счете, если для вас важны модульные испытания, вам может быть лучше развиваться с использованием web service framework, который был разработан с модульным тестированием с самого начала.

3

Возможно, вам не хватает смысла в том, что говорят другие люди. Файл .asmx должен иметь . Не стоит тестировать логику. Если это действительно просто обертка вокруг вызовов бизнес-уровня, то она ничего не добавляет и не нуждается в тестировании. Если он что-то добавит, извлеките это до тех пор, пока .asmx не будет содержать ничего, кроме сквозного вызова.

Что содержит ваш файл .asmx, который нельзя извлечь в отдельные тестируемые классы?

+0

это оболочка с дополнительной логикой, такой как ведение журнала и т. Д. Это пропуск в мой проект-оболочку PayPal и вызывает там обертки ... но обертки не всегда проходят мимо, не выполняя некоторого ведения журнала, обновления некоторых записей на нашей стороне и т. Д. – PositiveGuy

+0

Я мог бы догадаться, что вы разберетесь в отдельные классы. Я просто скопирую методы в некоторый класс Test и затем добавлю этот класс в свой тестовый проект. – PositiveGuy

Смежные вопросы