我希望能够为 Java 客户端/服务器运行集成测试(使用嵌入式 jetty)。此外,我希望能够在集成测试期间混合搭配不同的服务器和客户端源代码版本。
我想知道实现此目的的最佳 git 或 maven 版本策略是什么:
客户端和服务器使用相同的 git 存储库,很难签出不同服务器版本的代码并针对不同客户端版本的代码进行测试。
使用单独的 git 存储库(第一个存储库包含客户端 src 和集成测试,第二个存储库包含服务器 src) - 它还需要签出两个存储库才能运行集成测试,并假设它们之间的相对路径。
仅针对 maven 版本的服务器 WAR 测试客户端 src 代码,可能会导致开发人员针对与签出的服务器源代码不匹配的服务器 WAR 运行测试时犯无心错误。
我将指出第三个挑战:集成测试可能存在错误,因此您可能也希望独立控制测试版本。
我使用 git 的子模块功能来协调多个存储库。创建一个新存储库,其中将包含对客户端存储库和服务器存储库的引用。您也可以在此父存储库中放置基本测试驱动程序。
当新开发人员加入团队时,他们可以克隆此父存储库,然后运行git submodule update --init
克隆客户端和服务器子模块。这样他们就可以像其他人一样设置相对路径。
但是,我不喜欢让客户端存储库假设服务器位于../server/
。因此,我处理此问题的方法是让父存储库将任何所需的路径传递给子模块。例如,您可以有一个test.sh
在运行的父存储库中
make -C client SERVER_PATH=$(pwd)/server test
对于您的情况,您还可以将所有测试代码放在父存储库中。然后它可以安全地假定子模块的相对路径。
这种安排的一个有趣的附带好处是:您可以创建记录特定版本组合的 git 提交,因为当您在父存储库中提交时,会记录在子模块中签出的版本。您可以使用它为已通过测试的版本组合创建分支或标签集合。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)