如何在java项目中使用maven运行python单元测试?

gr8qqesn  于 2021-08-25  发布在  Java
关注(0)|答案(1)|浏览(668)

我有一个主要使用java的项目。我们在一个包中实现了一些python函数,并希望对它们进行单元测试。这些.py文件位于一个名为src/python的包中。
我必须解决实施测试时遇到的问题:
如何确保这些单元测试与maven测试框架集成?那么maven会自动运行它们吗?
如何让maven安装所需的非标准外部python库?
谢谢你的帮助!

n3ipq98p

n3ipq98p1#

maven exec插件提供了exec目标,可以在maven构建阶段运行任何可执行文件。
通过将插件配置为在maven默认生命周期的测试阶段运行,可以安装python包,并使用插件执行执行测试。
关于你的问题:
maven不提供自己的测试框架。它提供了一个称为“测试”的生命周期阶段。在构建jar时,maven运行一个默认插件,该插件与junit(位于测试类路径上)等java测试框架集成。此外,您还可以配置自定义插件执行,这些执行也可以在“测试”阶段运行,但可以使用python进行一些操作。
python包的安装方式可以与不使用maven时相同。exec目标可用于调用python包管理器可执行文件。
假设:
pip用作python包管理器
“pip”在path环境变量中可用
requirements.txt位于src/python目录中
python测试从“python-m unittest”开始
“python”在path环境变量中可用
在项目的pom.xml中,添加以下插件配置:

  1. <build>
  2. <plugins>
  3. <plugin>
  4. <groupId>org.codehaus.mojo</groupId>
  5. <artifactId>exec-maven-plugin</artifactId>
  6. <version>3.0.0</version>
  7. <executions>
  8. <execution>
  9. <id>pip-install</id>
  10. <phase>test</phase>
  11. <goals>
  12. <goal>exec</goal>
  13. </goals>
  14. <configuration>
  15. <workingDirectory>src/python</workingDirectory>
  16. <executable>pip</executable>
  17. <arguments>
  18. <argument>install</argument>
  19. <argument>-r</argument>
  20. <argument>requirements.txt</argument>
  21. </arguments>
  22. </configuration>
  23. </execution>
  24. <execution>
  25. <id>python-test</id>
  26. <phase>test</phase>
  27. <goals>
  28. <goal>exec</goal>
  29. </goals>
  30. <configuration>
  31. <workingDirectory>src/python</workingDirectory>
  32. <executable>python</executable>
  33. <arguments>
  34. <argument>-m</argument>
  35. <argument>unittest</argument>
  36. </arguments>
  37. </configuration>
  38. </execution>
  39. </executions>
  40. </plugin>
  41. </plugins>
  42. </build>

如果假设不正确,只需更改“pip安装”和/或“python测试”插件执行的可执行文件或参数。

展开查看全部

相关问题