几乎任何事情都是可能的理论上。但有些东西并不实用。
首先,如果您谈论的是 Jython 而不是 Python,这相对简单:
(但也请参阅 When will Jython support Python 3? ... 鉴于 Python 2 现在“生命终结”。)
本文的其余部分假设您在谈论“真正的”Python。
Java 程序的单元测试意味着您正在调用应用程序代码库中的方法。您的单元测试通常使用模拟框架来创建模拟对象来模拟应用程序的其他部分。单元测试和模拟框架通常用 Java 实现。
如果您要将单元测试实现为 Python 方法,那么您的 Python 单元测试方法将进行多个从 Python 到 Java 的跨语言调用。在模拟对象的情况下,应用程序代码(被测)将进行从 Java 到 Python 的跨语言调用。
调用单向是可能的,尽管在 Python 和 Java 之间映射值以及其他事情时,您需要担心各种混乱的事情。双向通话?不知道有没有实用性1.
简而言之:这太难实现了。用 Java 实现 Java 单元测试会更有效(您的时间和您的同事的时间)。
以上是针对常规Java应用程序单元测试的。测试 Java Web 应用程序怎么样?
无论 webapp 是用什么语言实现的,这些都应该可以工作。但我认为它们不是“单元测试”在该术语的传统含义中。
最后,如果您只想运行一些Java 单元测试来自 Python,那应该很容易。只需弄清楚如何从命令行运行 Java 单元测试框架的启动器。然后从 Python 中执行此操作。
您可以理论上在更细粒度的级别上做到这一点,但在实践中会很难。 Java JUnit 测试的 Python 运行程序需要能够识别包含各种 JUnit 注释的 Java 类,以便确定测试是什么。 (没听说过
1 - 理论上是可能的。开发支持此功能的 Java 和 Python 实现所需的一切。这“只是”几年的开发努力:-)。