2010-10-10 5 views
3

Я пытаюсь использовать Jython вместо Python для проекта (хочу использовать драйвер jdbc для своего рода редкой базы данных). Все работает нормально до сих пор, но я не могу найти никаких хороших инструментов для покрытия кода. У кого-нибудь есть решение?Покрытие для тестирования Jython

Похоже, что googling указывает на то, что на jython отсутствуют некоторые вещи, которые нужны инструментам покрытия кода. http://nedbatchelder.com/blog/201005/coveragepy_on_jython.html

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

ответ

1

Сообщение в блоге, в котором упоминается ссылка, вы можете запустить «прогон покрытия» под Jython, а затем «покрытие html» под CPython. Вы попробовали это? Это должно дать разумные результаты.

+0

Я попробовал, хотя я бы предпочел не приводить больше зависимостей, чем необходимо в мой проект. К сожалению, у меня были проблемы с установкой и застряли. Вот тогда я начал просить альтернативы. :) –

+1

Если вы хотите помочь, оставьте мне строку. coverage.py и CPython - это только две зависимости, любой другой инструмент будет как минимум одним! :) –

+0

Я принимаю этот ответ, хотя бы потому, что он заставил меня исправить мою проблему с окружающей средой и убедиться, что service.py действительно установлен, чтобы я мог ее протестировать. :) –

1

Как другие решают эту проблему?

Ваш вопрос в основном: «Как я могу получить инструменты для языков, на которых нет встроенной поддержки инструмента?» Гипермодернистское решение для программирования langauges состоит в том, чтобы попытаться построить всю необходимую поддержку в конкретных реализациях langauge (отражение, профилирование, метапрограммирование, ...). В то время как его хорошая идея, объем инженерных средств, необходимых для этого, огромен, и ... часто этого не происходит (свидетельствуйте о своей проблеме с Jython).

Еще один способ решить проблему - выйти за пределы языка (или его реализации) и получить meta поддержка инструментальных средств для двигателей, которые предназначены для реализации инструментов на самых разных языках. Для этого также требуется инженерная техника, но это можно сделать довольно обычным образом, чтобы мета-инструмент широко использовался. Такие мета-инструменты затем могут использоваться для реализации инструментов, которых у вас нет.

Наш DMS Software Reengineering Toolkit - это мета-инструмент, обеспечивающий анализ, анализ и преобразование программ, параметризованный явными определениями langauge. DMS поддерживает множество языков (C, C++, C#, COBOL, Java, PHP, ...), включая Python, и поддерживает диалекты, позволяя обрабатывать варианты «стандартного» langauge (я подозреваю, что Jython не точно Python).

По этой ссылке вы можете найти технический документ на how a meta-tool like DMS can be used to implement test coverage for arbitrary langauges. Эта идея была использована для внедрения семейства инструментов для тестирования, доступных в моей компании. (Мы, вероятно, сделаем это для Python в какой-то момент в будущем).

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