Опыт 1
В прошлом году я работал над проектом, состоящим из двух основных частей:
- Веб-приложение Grails
- и приложение Java Swing
мы написали наши модульные тесты Java с использованием Groovy, и это сработало хорошо. Модульное тестирование с использованием Groovy заняло намного меньше времени, а также позволило подделать статические методы и так далее. Хотя было несколько мест, где мы столкнулись с неожиданными результатами из-за динамической типизации Groovy, в целом это был положительный опыт.
Опыт 2
Другим недавним проектом, над которым я работал, было веб-приложение на C # ASP.NET MVC 3, где я написал все модульные тесты на F #. Я выбрал C # для веб-приложения, потому что чувствовал, что он лучше работает с MVC 3. Я выбрал F # для модульных тестов, потому что это мой любимый язык. Единственными проблемами, с которыми я столкнулся, были небольшие неприятности с такими типами, как null
против option
.
Заключение
Когда у нас есть два языка, предназначенные для одной и той же среды выполнения (ну, C # / F # и Java / Groovy для CLR и JRE соответственно), где один используется для производственного кода, а другой - для модульных тестов, беспокоиться не о чем по поводу совместимости как минимум. Тогда я думаю, что это действительно вопрос того, чувствуете ли вы и ваша команда достаточно комфортно на обоих языках (и я полагаю, вы можете быть достаточно любезны, чтобы подумать и о будущих сопровождающих). На самом деле, я думаю, что вы вынуждены использовать другой язык для модульного тестирования, когда язык модульного тестирования на самом деле является вашим языком комфорта или выбором по сравнению с вашим рабочим языком.
Есть некоторые исключения, которые я бы признал в этой либеральной позиции. Если вы разрабатываете библиотеку для использования языком X, то может быть разумно написать свои модульные тесты на языке X (по крайней мере, в некоторых). Но для кода приложения я никогда не находил особенно полезным написание модульных тестов на том же языке, что и ваш производственный код.