我有一个主要使用java的项目。我们在一个包中实现了一些python函数,并希望对它们进行单元测试。这些.py文件位于一个名为src/python的包中。我必须解决实施测试时遇到的问题:如何确保这些单元测试与maven测试框架集成?那么maven会自动运行它们吗?如何让maven安装所需的非标准外部python库?谢谢你的帮助!
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中,添加以下插件配置:
<build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>3.0.0</version> <executions> <execution> <id>pip-install</id> <phase>test</phase> <goals> <goal>exec</goal> </goals> <configuration> <workingDirectory>src/python</workingDirectory> <executable>pip</executable> <arguments> <argument>install</argument> <argument>-r</argument> <argument>requirements.txt</argument> </arguments> </configuration> </execution> <execution> <id>python-test</id> <phase>test</phase> <goals> <goal>exec</goal> </goals> <configuration> <workingDirectory>src/python</workingDirectory> <executable>python</executable> <arguments> <argument>-m</argument> <argument>unittest</argument> </arguments> </configuration> </execution> </executions> </plugin> </plugins> </build>
如果假设不正确,只需更改“pip安装”和/或“python测试”插件执行的可执行文件或参数。
1条答案
按热度按时间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中,添加以下插件配置:
如果假设不正确,只需更改“pip安装”和/或“python测试”插件执行的可执行文件或参数。