Я работаю с командой, которая разрабатывает приложение Java с использованием следующего хорошо зарекомендовавшего себя набора инструментов для автоматизированного построения, тестирования и непрерывной интеграции:
- ОС: Ubuntu
- IDE: Eclipse
- Инструменты сборки: Муравей
- Среда тестирования: JUnit
- Контроль версий: Subversion
- CI сервер: Дженкинс
Типичное задание Jenkins будет извлекать исходный код Java из Subversion и запускать целевые объекты Ant для создания кода, выполнения автоматических тестов и создания артефактов развертывания.
Сейчас мы рассматриваем возможность написания плагина .Net для клиентов Windows для доступа к API нашего приложения из MS Excel. Мы, вероятно, напишем его с использованием C # или F # - это первые дни, и мы еще не остановились на языке, но F # кажется, что он может предложить некоторые преимущества с точки зрения возможности выражать действия API с помощью комбинатора DSL.
Мы хотели бы выполнить как можно больше этой работы в Linux, используя Mono, и использовать нашу существующую инфраструктуру CI для сборки и тестирования нашего программного обеспечения.
Мое первое впечатление, что набор инструментов будет выглядеть примерно так:
- ОС: Linux
- IDE: Monodevelop / VIM (поддержка Eclipse для Mono, и особенно для F #, кажется, отсутствует)
- Инструмент для сборки: NAnt
- Среда тестирования: NUnit
- Контроль версий: Subversion
- CI сервер: Jenkins, с плагином NAnt
У кого-нибудь есть опыт разработки с таким набором инструментов? Я хотел бы ответить на два вопроса:
- Каковы основные подводные камни в этом подходе для разработчиков, использованных в экосистеме Java?
- Есть ли лучшие альтернативы NAnt и NUnit для построения и запуска автоматических тестов, особенно для F #?