2012-03-09 1 views
2

Я начинаю проект в C# .Net, должен ли я создать службу Windows. Эта служба будет прослушивать несколько последовательных портов и перенаправлять некоторые из данных на другой последовательный порт. Я пытаюсь найти решение CI, которое даст мне сквозное тестирование. В основном отправляя данные на виртуальные последовательные порты на мою службу, а затем слушайте на выходе, чтобы убедиться, что правильные данные перенаправлены.Как протестировать интеграционные тесты на программном интерфейсе с последовательными портами?

Для ввода данных у меня будут файлы журналов, которые могут быть отправлены моей тестируемой службе, и я создам файлы с ожидаемыми результатами. Используя com0com для создания пар виртуальных последовательных портов, это должно быть выполнимо.

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

Можно ли это сделать, что-то вроде Hudson или CruiseControl.Net? Исходный код будет размещен в репозитории Mercurial (HG), и в идеале мои тесты будут выполняться каждый раз, когда я нажимаю на сервер (если допустимо время работы).

Звучит ли это как хороший план? Любые другие способы, которыми я мог бы это сделать?

ответ

1

Если честно, если вы хотите проверить логику, которую выполняет ваша служба, я бы склонялся к издевательствам виртуальных портов на C# и проверял входы и выходы в коде, в частности, сценарии, которые вы хотите оценить. Таким образом, вы сохраняете код в простой для запуска C# модульной тестовой среде, такой как NUnit, XUnit и т. Д. Я бы не вводил другой язык в уравнение и не усложнял его дальше.

Независимо от вашего выбора, что-то вроде Hudson/Jenkins будет подходящим для ваших нужд, и я бы рекомендовал им что-то вроде CruiseControl.Net, поскольку он немного длиннее в зубе и не имеет такого же типа сообщества вокруг него.

Если у вас есть другие вопросы, просто стреляйте.

Приветствия, Натан

+1

Я также буду использовать NUnit для запуска других тестов, включая насмешливый последовательные порты. Но со сложными двоичными данными в качестве ввода я бы хотел запустить полные сквозные тесты. Тот факт, что я передам это другим людям для будущего обслуживания, означает, что мне бы хотелось «легко» добавить больше этих тестов, когда мы идем. –

+1

Тестирование End To End еще более важно, чем модульное тестирование. Издевательский интерфейс порта также является хорошей идеей, но не для завершения теста с реальными данными. – Johannes

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