我正在尝试将Jython而不是Python用于项目(想要jdbc驱动程序用于某种罕见的数据库)。 到目前为止一切正常,但我找不到任何代码覆盖的好工具。有人有解决方案吗?
我所做的谷歌搜索似乎表明jython缺少代码覆盖工具所需的一些东西。 http://nedbatchelder.com/blog/201005/coveragepy_on_jython.html
其他人如何解决这个问题?我想像jpype这样的东西和普通的python一样是前进的方法,但我宁愿不在我的环境中引入jpype来进行覆盖测量。
答案 0 :(得分:1)
其他人如何解决这个问题?
您的问题基本上是“我如何获得没有内置工具支持的语言工具?”编程语言的超现代解决方案是尝试在特定的语言实现(反射,分析,元编程......)中构建所有必要的支持。虽然它是一个好主意,但要做的工程量很大,而且......通常不会发生(见证你的Jython问题)。
解决问题的另一种方法是走出语言(或其实现),并从旨在实现各种语言的工具的引擎获得 meta 工具构建支持。这也需要工程,但它可以通过非常通用的方式完成,以便元工具可以广泛使用。然后可以使用这些元工具来实现您没有的工具。
我们的DMS Software Reengineering Toolkit是一个元工具,提供程序解析,分析和转换,由显式语言定义参数化。 DMS支持包括Python在内的多种语言(C,C ++,C#,COBOL,Java,PHP等),它支持方言,使其能够处理“标准”语言的变体(我怀疑Jython不完全是Python)。
在此链接中,您可以找到关于how a meta-tool like DMS can be used to implement test coverage for arbitrary langauges的技术论文。这个想法已被用于实现我公司提供的一系列测试覆盖工具。 (我们很可能在未来的某个时候为Python做这个。)
答案 1 :(得分:1)
您链接的博客文章提到您可以在Jython下运行“coverage run”,然后在CPython下运行“coverage html”。你试过这个吗?它应该给出合理的结果。