Jython 测试覆盖率

3 投票
2 回答
651 浏览
提问于 2025-04-16 05:17

我正在尝试在一个项目中使用Jython,而不是Python(因为我需要一个针对某种比较少见数据库的jdbc驱动)。到目前为止,一切都运作得不错,但我找不到好的代码覆盖率工具。有没有人有解决方案呢?

我在网上查找的信息似乎表明,Jython缺少一些代码覆盖率工具所需的东西。http://nedbatchelder.com/blog/201005/coveragepy_on_jython.html

其他人是怎么解决这个问题的呢?我想像jpype这样的东西配合普通的Python可能是个办法,但我不太想为了测量覆盖率而在我的环境中引入jpype。

2 个回答

1

别人是怎么解决这个问题的呢?

你的问题其实就是:“怎么为那些没有内置工具支持的编程语言找到工具?”现在的编程语言通常会尝试把所有必要的支持功能都集成到语言本身里,比如反射、性能分析、元编程等等。虽然这个想法很好,但实现起来需要大量的工程工作,而且……很多时候这根本就没发生(看看你在 Jython 上遇到的问题就知道了)。

解决这个问题的另一种方法是跳出语言本身(或者它的实现),去寻找一些专门为多种语言提供工具支持的工具。这同样需要工程技术,但可以用比较通用的方式来实现,这样元工具就能被广泛使用。这些元工具可以用来实现你所缺少的工具。

我们的 DMS 软件重构工具包 就是这样一个元工具,它提供程序解析、分析和转换功能,并且可以根据明确的语言定义进行参数化。DMS 支持多种语言(如 C、C++、C#、COBOL、Java、PHP 等等),当然也包括 Python,并且它支持方言,这使得它能够处理“标准”语言的不同变种(我怀疑 Jython 和 Python 完全一样)。

在这个链接中,你可以找到一篇技术论文,介绍 像 DMS 这样的元工具如何用于实现任意语言的测试覆盖率。这个想法已经被用来开发一系列测试覆盖率工具,这些工具是我们公司提供的。(我们未来可能会为 Python 也做类似的事情)。

1

你链接的博客文章提到,你可以在Jython下运行“coverage run”,然后在CPython下运行“coverage html”。你试过这样做吗?这样应该会得到不错的结果。

撰写回答