在java中,在源代码和测试之间共享资源的推荐方法是什么?
我在在java中,在源代码和测试之间共享资源的推荐方法是什么?,java,maven,unit-testing,resources,Java,Maven,Unit Testing,Resources,我在src/main/resources文件夹中有一些文件,这些文件是我正在使用的应用程序使用的,我将其中几个文件复制到src/test/resources文件夹中,以便我的测试可以轻松访问它们。我想知道这是否是单元测试的最佳实践?例如,我可以从src/main/resources加载资源,这样,如果有人更改了源代码,我的测试就会失败。这方面的最佳实践是什么?在测试期间,src/main/resources中的文件是可用的,我刚刚确认我就是这样。您可以通过将这些资源添加到src/test/res
src/main/resources
文件夹中有一些文件,这些文件是我正在使用的应用程序使用的,我将其中几个文件复制到src/test/resources
文件夹中,以便我的测试可以轻松访问它们。我想知道这是否是单元测试的最佳实践?例如,我可以从src/main/resources
加载资源,这样,如果有人更改了源代码,我的测试就会失败。这方面的最佳实践是什么?在测试期间,src/main/resources
中的文件是可用的,我刚刚确认我就是这样。您可以通过将这些资源添加到src/test/resources
来覆盖这些资源,但据我所知,您无法在测试中隐藏它们,因此看起来您的系统上似乎存在配置错误。除非有充分的理由复制这些文件,否则我将有一个副本。使用src/main/resources
,除非它们不应该被发布。main/resource中的文件内容是静态的吗?它会改变吗?如果我有一个测试,其中返回数据的断言是硬编码的,例如,检查从文件读取的字符串是否是我期望的字符串的测试,那么我必须在断言中硬编码期望的字符串。如果main/resources下的文件发生更改,我的测试将开始失败。测试的一般方法是,测试环境在我每次运行它时都应该保持不变。如果资源属于主代码,并且您只在测试中使用它来检查主代码,那么您应该将其保存在src/main/resources
中src/test/resources
用于仅用于测试的内容。