繁体   English   中英

使用Python单元测试进行Scala测试

[英]Scala Testing with Python unittests

我有一个用Python编写的带有单元测试的库。 我将开始将该功能移植到Scala,以在Spark上运行并作为Android应用程序的一部分运行。 但是我不愿意在scala中重现单元测试。

有没有一种方法可以将要编写的Scala库暴露给来自Python的外部询问? 我可以重写测试以使用命令行界面,但是我想知道是否还有其他方法。

我排除了Jython,因为它与我现有的Python 3库和单元测试不兼容。

您可以通过使用Py4J从Python调用Scala代码来做到这一点。 Py4J在常规cPython解释器中工作,并且与Python 3兼容

从本质上讲,您将从Java调用Scala代码,因此,您必须在某种程度上了解Scala构造如何映射到Java( 这是一些基本约定的不错的总结 )。 根据代码的编写方式,您可能会发现实现Java帮助程序类更容易,该类将对Scala类/应用程序公开对Java友好的接口,并从Py4J调用该新Java类。 这就是我们为Spark的Python API PySpark采取的方法( 更多详细信息请参见 )。

简短答案 :也许可以,但是不要。

最终,常识盛行。 我现在的目标是使用pyspark或将单元测试与库的其余部分一起移植到Scala。

通过生成专门打印我想要的内容的Scala代码,可以将Scala暴露给Python。 然后从Python调用SBT来编译该代码并运行并捕获标准输出。 我开始在Python中模拟相同api的scala版本,以创建这些自定义的scala脚本,并通过为每个查询添加一个编译步骤而变得非常慢。 当我开始为我的Mocked Scala类考虑基于命令行界面或基于套接字的api时,现实陷入了现实。

要回答运行现有Python单元测试的实际问题,尽管我认为仍然有可能,但这不是一个好主意。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM