我正在开发一个带有maven结构的项目,我想开始做一些扩展测试,但我需要大量的资源才能这样做。我应该把这些资源放在哪里?他们应该进入'src / main / test / resources'还是从不同的回购或其他东西中提取?
答案 0 :(得分:2)
重新提问
我应该放置这些资源的任何建议吗? [...]
我知道我可以把它们放在'src / main / test / resources'[...]
我正在考虑更多用于集成测试的资源。开发人员不一定希望从版本控制中获取100%的资源,用于他们可能无法运行的测试。
<强>答案强>
您可以更改为多模块项目布局,例如:
multi-module project
|
|
+---+-----------------+
| |
source and unit test integration test
prj prj
然后您的开发人员只能提取source and unit test prj
。
显然,集成测试prj应该对source and unit test prj
具有编译范围依赖性。
答案 1 :(得分:1)
Maven有一个答案......
如果您将资源包含在&#39; src / main / test / resources&#39; (那是对的)......
请记住,在最后一个jar中运行安装,测试将被排除在外,是的!资源也被排除在外......
此外,您可以跳过测试(也是编译)以提高编译性能...... (更多信息请访问:http://maven.apache.org/surefire/maven-surefire-plugin/examples/skipping-test.html)
我希望这可以帮助你...
更新:
还要看一下&#34; How can you display the Maven dependency tree for the *plugins* in your project?&#34;
答案 2 :(得分:0)
我们应该考虑从开发人员的环境中排除资源的原因。我只是回答你的问题,告诉Maven处理像你这样的情况的常见做法......
如果你说它实际上对你来说是一个问题,那么可能是一个想法,例如,将所有测试和资源分开到另一个模块中......包括你父pom中的那些...... 或者可能定义一个包含大部分测试资源的配置文件(集成测试),以及一个只会导致对各个开发人员有用的测试的配置文件(开发测试)......
我个人认为,除非有特殊原因(关键),除了大量占用测试之外,您还可以安全地继续使用测试包中的所有资源......
答案 3 :(得分:-1)
您应该在CI服务器上运行此类大型集成测试,而不是在开发人员计算机上运行。
在不同的计算机上运行长时间运行的集成测试以减少开发测试周期时间是一种很好的做法。您无论如何都不想在正常版本中运行它,创建配置文件并在CI上运行它。