我正在尝试为一个项目使用Jython而不是Python (对于一种稀有的数据库,我想使用jdbc驱动程序)。到目前为止,一切都很正常,但我找不到任何好的工具来覆盖代码。有谁有解决这个问题的办法吗?
我所做的googling搜索似乎表明,jython缺少代码复盖工具所需的一些东西。http://nedbatchelder.com/blog/201005/coveragepy_on_jython.html
其他人是如何解决这个问题的?我认为像jpype和普通python这样的东西将是一种前进的方向,但我不希望在我的环境中引入jpype仅仅是为了测量覆盖率。
发布于 2010-10-12 04:23:30
您链接的博客文章提到,您可以在Jython下运行"coverage run“,然后在CPython下运行"coverage html”。你试过这个吗?它应该给出合理的结果。
发布于 2010-10-12 02:00:17
其他人是如何解决这个问题的?
您的问题基本上是,“我如何才能获得用于没有内置工具支持的语言的工具?”编程语言的超现代解决方案是尝试在特定的语言实现中内置所有必要的支持(反射、分析、元编程等)。虽然这是一个很好的想法,但所需的工程量是巨大的,而且……这种情况通常不会发生(Jython的问题就是例证)。
另一种解决问题的方法是跳出语言(或其实现),并从引擎获得元工具构建支持,这些引擎旨在跨多种语言实现工具。这也需要工程设计,但它可以通过非常通用的方式来完成,这样元工具就可以广泛使用。这样的元工具可以用来实现你没有的工具。
我们的DMS Software Reengineering Toolkit就是这样一个元工具,提供程序解析、分析和转换,并通过显式的语言定义进行参数化。DMS支持多种语言(C、C++、C#、COBOL语言、Java、PHP...)包括Python,并且它支持方言,这使得它能够处理“标准”语言的变化(我怀疑Jython并不完全是Python)。
在此链接中,您可以找到一篇关于how a meta-tool like DMS can be used to implement test coverage for arbitrary langauges的技术论文。这个想法已经被用来实现我公司提供的一系列测试覆盖工具。(我们很可能在将来的某个时候为Python做这件事)。
https://stackoverflow.com/questions/3902350
复制相似问题